【问题标题】:JMenu work on single tabJMenu 在单个选项卡上工作
【发布时间】:2012-12-30 20:03:45
【问题描述】:

我有一个JMenuBar 和一个JTabbedPane,当我创建多个选项卡时,JMenuBar 会在所有选项卡上执行此操作,例如我打开一个文件,它在每个选项卡中打开相同的文件。

但是我只希望它在当前选项卡上打开一个文件。我添加了一个ChangeListener,所以它知道它在哪个标签中,但是即使它有效,它似乎也没有帮助。

tabbedPane.addChangeListener(new ChangeListener() {
    public void stateChanged(ChangeEvent e) {
        System.out.println("Tab=" + tabbedPane.getSelectedIndex());
    }
});
getContentPane().add(tabbedPane, "Center");
pack();

我希望能够打开多个选项卡,而菜单栏仅对应于当前选项卡。

【问题讨论】:

  • 你能提供一些示例代码来展示你是如何加载文件和设置标签内容的吗?
  • 由于安全风险,我无法上传任何代码,但我提供的任何信息都会有所帮助。到目前为止,我想到的唯一方法是在选项卡中添加菜单栏,但是这更复杂并且看起来不太好。我想知道是否有办法仅将菜单栏与当前选项卡链接。因为 changelistener 选择选项卡的位置。谢谢
  • 如果没有您的问题示例,就无法为您提供帮助...
  • 啊,好的,谢谢您的宝贵时间。
  • 如需尽快获得更好的帮助,请发帖SSCCE

标签: java swing jtabbedpane jmenubar


【解决方案1】:

让提供每个选项卡内容的对象导出它自己的Action 特定实例。当用户更改选项卡时,使用setAction() 在全局菜单中设置每个可用JMenuItem 的所需操作。有一个相关的例子here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-30
    • 1970-01-01
    • 2016-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多