【问题标题】:How to switch tabs in jTabbedPane by clicking a Button?如何通过单击按钮切换 jTabbedPane 中的选项卡?
【发布时间】:2010-11-11 17:27:52
【问题描述】:

我有两个 JTabbedPane,JTabbedPane1 和 2 如何在 JTabbedPane2 中按下按钮以显示 JTabbedPane1 ?

这是 JTabbedPane 的代码:

public class TabbedPane extends JFrame {

    public TabbedPane() {


        setTitle("Tabbed Pane");  
        setSize(300,300); 

        JTabbedPane jtp = new JTabbedPane();

       getContentPane().add(jtp);

       JPanel1 jp1 = new JPanel1();//This will create the first tab

       JPanel jp2 = new JPanel2();//This will create the second tab

       //add panel .........

    //example usage
     public static void main (String []args){
        TabbedPane tab = new TabbedPane();
    }

}

这里是 JPane1 类:

...    JLabel label1 = new JLabel();
       label1.setText("This is Tab 1");
       jp1.add(label1);

和带按钮的 Jpane2 类

JButton 测试 = new JButton("Press"); jp2.add(test);

ButtonHandler phandler = new ButtonHandler();
test.addActionListener(phandler);
setVisible(true); 

} 所以问题出在 Jpanel2 上按钮的 ActionListener 中

class ButtonHandler implements ActionListener{
       public void actionPerformed(ActionEvent e){
              // what i do now ? to call  jpanel 1 show ![alt text][1]
       }
}

【问题讨论】:

    标签: java swing jtabbedpane


    【解决方案1】:

    如果您让 ButtonHandler 可以访问选项卡式窗格,您可以这样做:

    class ButtonHandler implements ActionListener{
           public void actionPerformed(ActionEvent e){
                  jtp.setSelectedIndex(0);
           }
    }
    

    您可以通过使用 getter 方法将 jtp(最好使用更好的名称)作为私有属性来做到这一点,或者可以将其作为构造函数参数传递给 ButtonHandler。

    【讨论】:

    • 太棒了:D 我只是忘记了索引。
    【解决方案2】:

    你应该使用 JTabbedPane.setSelectedIndex(int index) 方法和你想要的标签的索引。

    【讨论】:

      【解决方案3】:

      很简单:使用下面的代码:

      JTabbedpane.setSelectedIndex(); 
      

      你的名字是什么 J Panel 用上面的 JTabbedpane 替换它,例如你想选择第一个选项卡只需将 0 放在括号中,如果你想选择第二个选项卡然后将 1 放在括号中,例如:my J选项卡式窗格称为 jtabbedpanel,我想要第一个选项卡,然后该行将如下所示:

      jtabbedpanel.setSelectedIndex(0);
      

      希望这会有所帮助!

      【讨论】:

        【解决方案4】:

        就像补充一点,你的动作监听器必须和你的标签在同一个类中。

        【讨论】:

          【解决方案5】:

          刚刚!与:

          JTabbedPane.setSelectedComponnet(component);
          

          【讨论】:

          • 来自审核队列:我可以请求您在您的答案周围添加更多上下文。仅代码的答案很难理解。如果您可以在帖子中添加更多信息,它将帮助提问者和未来的读者。另请参阅Explaining entirely code-based answers
          【解决方案6】:

          这里是固定的完整代码。 12 年后。

          import javax.swing.*;
          import java.awt.*;
          import java.awt.event.*;  
          import javax.swing.JPanel;
          
          public class TabbedPane extends JFrame {
              public TabbedPane() {
                  JTabbedPane jtp = new JTabbedPane(); 
                  JPanel jp1 = new JPanel();//This will create the first tab
                  JPanel jp2 = new JPanel();//This will create the second tab
                  setTitle("Tabbed Pane");  
                  setSize(400,300); 
                  setLocationRelativeTo(null);
                  
                  JLabel label1 = new JLabel();
                  label1.setText("This is Tab 1"); 
                  jp1.add(label1);
                  //jp2.add(new JLabel(new ImageIcon("C:/users/user/downloads/jav/s1/pic1.jpg")));        
                  getContentPane().add(jtp);
                  
                  JButton nextButton = new JButton("Next"); jp1.add(nextButton);
                  JButton prevButton = new JButton("Previous"); jp2.add(prevButton);
                  //prev
                  class ButtonHandlerPrev implements ActionListener{
                      public void actionPerformed(ActionEvent e){
                          int i = jtp.getSelectedIndex();
                          jtp.setSelectedIndex(i-1);
                      }
                  }
                  class ButtonHandlerNext implements ActionListener{
                      public void actionPerformed(ActionEvent e){
                          int i = jtp.getSelectedIndex();
                          jtp.setSelectedIndex(i+1);
                      }
                  }
                  jtp.addTab("first", jp1);
                  jtp.addTab("second", jp2);
                  ButtonHandlerPrev prevHandler = new ButtonHandlerPrev();
                  ButtonHandlerNext nextHandler = new ButtonHandlerNext();
                  prevButton.addActionListener(prevHandler);
                  nextButton.addActionListener(nextHandler);
                  setVisible(true);
              }
                  //example usage
              public static void main (String []args){
                  TabbedPane tab = new TabbedPane();
              }
          }
          

          只需运行 void main(String[] args)

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2021-10-26
            • 2021-11-28
            • 2015-11-11
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-07-31
            相关资源
            最近更新 更多