TabbedComponent(extending JTabbedPane)を変数として格納するMainクラスがあります。別のクラス(ToolbarComponent(extending JMenuBar)も、メインクラス内に変数として格納されています。
ツールバーのユーザーイベントが発生すると、親クラス(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;
}
}
これは本当に単純に私が行方不明になっていることですか?