我有一个将 TabbedComponent(扩展 JTabbedPane)存储为变量的 Main 类。另一个类 (ToolbarComponent(extending JMenuBar) 也作为变量存储在我的主类中。
在 Toolbar 上发生用户事件时,它会调用父类(main),以获取 TabbedComponent 对象并调用方法来创建新选项卡。这一切都很好。
我的问题是,当我尝试用鼠标单击 ta 时,没有任何变化。我很确定我不需要 MouseAdapter 上的侦听器来做一些简单的事情,但如果我需要它我猜会添加它。
以下是与此问题相关的类的精简版本
公共类 ExampleClass 扩展 JFrame {
private TabbedBrowserPaneComponent cTabbedBrowserPane;
public ExampleClass() {
super("");
// Set up Components
this.cTabbedBrowserPane = new TabbedBrowserPaneComponent(this);
// Set up behaviour
setSize(500, 300);
setVisible(true);
}
/**
* @return the cTabbedBrowserPane
*/
public TabbedBrowserPaneComponent getTabbedBrowserPane() {
return cTabbedBrowserPane;
}
/**
* @param cTabbedBrowserPane the cTabbedBrowserPane to set
*/
public void setTabbedBrowserPane(TabbedBrowserPaneComponent cTabbedBrowserPane) {
this.cTabbedBrowserPane = cTabbedBrowserPane;
}
}
public class TabbedBrowserPaneComponent extends JTabbedPane {
// Parent class of the component
private JFrame parent = null;
public TabbedBrowserPaneComponent(JFrame parent) {
super();
setParent(parent);
// Add an initial pane
createNewTab();
parent.getContentPane().add(this);
}
public void createNewTab() {
JPanel panel = new JPanel(new BorderLayout());
panel.add(new JScrollPane(), BorderLayout.CENTER);
this.addTab("Tab " + this.getTabCount(), panel);
}
/**
* @return the parent
*/
public JFrame getParent() {
return parent;
}
/**
* @param parent the parent to set
*/
public void setParent(JFrame parent) {
this.parent = parent;
}
}
要创建一个新选项卡,ToolBarComponent 的侦听器调用如下
public class CreateNewTabAction extends AbstractAction {
// Parent
private JMenu parent;
public CreateNewTabAction(JMenu parent) {
super();
this.setParent(parent);
// Values for the tab
putValue(Action.NAME, "New Tab");
}
@Override
public void actionPerformed(ActionEvent e) {
ExampleClass.class.cast((parent.getParent().getParent())).getTabbedBrowserPane().createNewTab();
}
/**
* @return the parent
*/
public JMenu getParent() {
return parent;
}
/**
* @param parent the parent to set
*/
public void setParent(JMenu parent) {
this.parent = parent;
}
}
我真的很想念这件事吗?