import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;public class TestJFrame extends JFrame{
JFrame jFrame = this;
public TestJFrame(String tiele){
this.add(new JPanel01(jFrame));
}
public static void main(String[] args){
TestJFrame jframe = new TestJFrame("TestJFrame");
jframe.setVisible(true);
jframe.setSize(((int)Toolkit.getDefaultToolkit().getScreenSize().width),((int)Toolkit.getDefaultToolkit().getScreenSize().height));
}
}class JPanel01 extends JPanel{
JFrame jframe;
public JPanel01(JFrame jFrame){
JButton b = new JButton("JButton01");
this.add(b);
jframe = jFrame;
b.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent arg0) {
jframe.getContentPane().removeAll();
jframe.add(new JPanel02(jframe));
jframe.validate();

}
});
}
}class JPanel02 extends JPanel{
JFrame jframe;
public JPanel02(JFrame jFrame){
JButton b = new JButton("JButton02");
this.add(b);
jframe = jFrame;
b.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent arg0) {
jframe.getContentPane().removeAll();
jframe.add(new JPanel03(jframe));
jframe.validate();

}
});
}
}class JPanel03 extends JPanel{
JFrame jframe;
public JPanel03(JFrame jFrame){
JButton b = new JButton("JButton03");
this.add(b);
jframe = jFrame;
b.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent arg0) {
jframe.getContentPane().removeAll();
jframe.add(new JPanel04(jframe));
jframe.validate();

}
});
}
}class JPanel04 extends JPanel{
JFrame jframe;
public JPanel04(JFrame jFrame){
JButton b = new JButton("JButton04");
this.add(b);
jframe = jFrame;
b.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent arg0) {
jframe.getContentPane().removeAll();
jframe.add(new JPanel04(jframe));
jframe.validate();

}
});
}
}
代码现在是按按钮就按顺序显示JPanel,怎样才可以实现按下JButton01或者60秒后自动跳到JPanel02-04的随机一张,02-04都显示一次每次也是按下按钮或者指定时间就跳到下一张。表达能力不好,好像描述得有点乱....

解决方案 »

  1.   

    使用 CardLayout 进行切换、不要removeAll /add。
    CardLayout layout = new CardLayout();
    JPanel container = new JPanel(layout);
    ArrayList<String> tags = new ArrayList<String>();
    container.add(new JPanel01,"Panel01");
    tags.add("Panel01");
    container.add(new JPanel02,"Panel02");
    tags.add("Panel02");
    ...
    ...
    随机切换Random random = new Random();
    layout.show(container,random.nextInt(tags.size()));
    定时的话 使用 javax.swing.Timer.