自动在java中单击按钮时单击以选中特定选项卡

时间:2014-10-04 21:46:53

标签: java swing jbutton jtabbedpane

我有JTabbedPane,其中有5个标签。我还在同一个JFrame中添加了3个其他按钮,其中添加了JTabbedPane。我想让用户在单击特定按钮时移动到特定选项卡。这是图像示例

enter image description here

现在,例如,如果用户点击Button 1,那么应该打开tab One,同样在点击button 2时,应该打开tab Two,因此对于第三个。

这是我添加这些JTabbedPane和按钮的代码。

public class TabsAndButtons
{
    public TabsAndButtons()
    {
       JTabbedPane tabsPane = new JTabbedPane();
       tabsPane.add("One", new JPanel());
       tabsPane.add("Two", new JPanel());
       tabsPane.add("Three", new JPanel());
       tabsPane.add("Four", new JPanel());
       tabsPane.add("Five", new JPanel());

       JPanel Panel = new JPanel();
       Panel.add(tabsPane);

       JButton Button1 = new JButton("Button 1");
       Panel.add(Button1);
       JButton Button2 = new JButton("Button 2");
       Panel.add(Button2);
       JButton Button3 = new JButton("Button 3");
       Panel.add(Button3);

       JFrame MainFrame = new JFrame("JTabbedPane and Buttons");
       MainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       MainFrame.getContentPane().add(Panel );
       MainFrame.pack();
       MainFrame.setVisible(true);
    }

    public static void main(String[] args) 
    {
       java.awt.EventQueue.invokeLater(() -> {
           new TabsAndButtons();
       });
    }
}

这种行动的实际目的非常冗长,并且有很多细节会使问题变得沉闷,所以我问的是我坚持的主要任务。感谢您的支持和时间。

3 个答案:

答案 0 :(得分:2)

使用方法button.addActionListener() to execute code when a button is clicked. The code that you want to execute is probably tabsPane。 setSelectedIndex(i)where i`是您要显示的选项卡的索引。

您可能还想将JTabbedPane tabsPane移动到成员变量中,或用final标记它,以确保可以从动作侦听器中访问它。

答案 1 :(得分:2)

为每个按钮添加ActionListener。然后在ActionListener中,您可以调用选项卡式窗格的setSelected(...)方法。

阅读How to Write an ActionListener上Swing教程中的部分,了解更多信息和示例。

此外,变量名称不应以大写字符开头。

答案 2 :(得分:0)

在JTabbedPane上的方法setSelectedIndex(int index)按钮的EventListener中尝试。
参考文献:http://docs.oracle.com/javase/7/docs/api/javax/swing/JTabbedPane.html#setSelectedIndex%28int%29