点击按钮如何在jTabbedPane中切换选项卡?

22

我有两个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中添加一个名为“test”的按钮

JButton test = 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]
       }
}

alt text

6个回答

47
如果你将选项卡窗格对ButtonHandler开放,你可以这样做:
class ButtonHandler implements ActionListener{
       public void actionPerformed(ActionEvent e){
              jtp.setSelectedIndex(0);
       }
}
您可以通过将jtp(最好使用更好的名称)作为私有属性,并提供一个getter方法或将其作为构造函数参数传递给ButtonHandler来实现此操作。

太好了:D我刚刚忘记了索引。 - gumuruh

9

您应该使用方法JTabbedPane.setSelectedIndex(int index),并指定您想要的选项卡的索引。


3

非常简单:使用以下代码:

JTabbedpane.setSelectedIndex(); 

无论你的J面板叫什么名字,都用上述的JTabbedPane替换它。例如,如果你想选择第一个选项卡,只需在括号中放入0,如果你想选择第二个选项卡,则放入1,例如:我的J TabbedPane叫做jtabbedpanel,我想要第一个选项卡,那么这行代码将如下所示:

jtabbedpanel.setSelectedIndex(0);

希望这能有所帮助!

0

只要!用:

JTabbedPane.setSelectedComponnet(component);

1
从审核队列中:我可以请求您在您的答案周围添加更多的上下文吗?仅有代码的答案很难理解。如果您能在帖子中添加更多信息,这将有助于提问者和未来的读者。请参见解释完全基于代码的答案 - help-info.de

0

这是固定和完整的代码。 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)


0

还想补充一点,你的动作监听器必须与你的选项卡在同一个类中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接