当前位置: 代码迷 >> Java相关 >> 关于一个JFrame
  详细解决方案

关于一个JFrame

热度:310   发布时间:2007-01-16 22:55:50.0
关于一个JFrame

现在我想做几个面板,每一个面板都有其自己既功能,简单来说,就是例如按了"下一步"的按钮就在同一个JFrame显示
另一个询问框,同时如果按钮了"上一步"的按钮也可以回到原来的面板,就好像这里的论坛有一个人做的模拟ATM的程序那样,
不过不是弹出另一个窗口,然后把原来的窗口隐藏,
我开始写了下边的代码,发觉是不行的,不过我都觉得应该不行,所以希望有高人指教一下
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class testpanel extends JFrame implements ActionListener
{
JPanel p1=new JPanel() ;
JPanel p2=new JPanel() ;
JButton b1=new JButton("Enter") ;
JButton b2=new JButton("Finish") ;
JButton b3=new JButton("Return") ;
JLabel l1=new JLabel("Wellcome") ;
JLabel l2=new JLabel("Test Finish") ;
public testpanel()
{
this.setLayout(new BorderLayout());
p1.setLayout(new FlowLayout()) ;
p2.setLayout(new FlowLayout()) ;
p1.add(b1,BorderLayout.SOUTH ) ;
p1.add(l1,BorderLayout.CENTER ) ;
p1.setVisible(true) ;
p2.setVisible(false) ;
p2.add(b2,BorderLayout.CENTER ) ;
p2.add(b3,BorderLayout.CENTER ) ;
p2.add(l2,BorderLayout.NORTH ) ;
b1.addActionListener(this) ;
b2.addActionListener(this) ;
b3.addActionListener(this) ;
this.add(p2) ;
this.add(p1) ;
this.setSize(300,200) ;
this.setVisible(true) ;
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource() ==b1);
{
p1.setVisible(false) ;
p2.setVisible(true) ;
}
if(e.getSource() ==b3)
{
p1.setVisible(true) ;
p2.setVisible(false) ;
}
if(e.getSource() ==b2)
{
System.exit(0);
}
}
public static void main(String[] args) {
new testpanel();
}
}
其实我的意思就是用两个JPanel添加到JFrame里面 然后通过各自的setvisible设置为true 或flase 来控制它的显示,结果
是最上面的JPanel覆盖了下边的JPanel了,所以行不通,请指教一下,谢谢啦

搜索更多相关的解决方案: JFrame  

----------------解决方案--------------------------------------------------------

你可以使用add()和remove方法来实现

你要加什么进来,就先调用removeAll,然后再加进来
http://bbs.bc-cn.net/BuyPost.asp?boardid=220&replyid=474351&id=474351&rootid=116355&posttable=Dv_bbs2


----------------解决方案--------------------------------------------------------
..........有时候看着你们觉得挺悲哀的
if(e.getSource() ==b1);
{
p1.setVisible(false) ;
p2.setVisible(true) ;
}
这样的代码都写得出来...




import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

/**
*
* @author vlinux
*/
public class TestPanel extends JFrame implements ActionListener {

JPanel p1=new JPanel();
JPanel p2=new JPanel();
JButton b1=new JButton("Enter");
JButton b2=new JButton("Finish");
JButton b3=new JButton("Return");
JLabel l1=new JLabel("Wellcome");
JLabel l2=new JLabel("Test Finish");

/** Creates a new instance of TestPanel */
public TestPanel() {
this.setLayout(new BorderLayout());

p1.setLayout(new FlowLayout());
p1.add(b1,BorderLayout.SOUTH );
p1.add(l1,BorderLayout.CENTER );


p2.setLayout(new FlowLayout());
p2.add(b2,BorderLayout.CENTER );
p2.add(b3,BorderLayout.CENTER );
p2.add(l2,BorderLayout.NORTH );

b1.addActionListener(this);
b2.addActionListener(this);
b3.addActionListener(this);
this.setContentPane( p1 );
this.setSize(300,200);
this.setVisible(true);
this.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
}

public void actionPerformed(ActionEvent e) {
if(e.getSource() ==b1) {
this.setContentPane( p2 );
this.setVisible(true);
}
if(e.getSource() ==b3) {
this.setContentPane( p1 );
this.setVisible(true);

}
if(e.getSource() ==b2) {
System.exit(0);
}
}
public static void main(String[] args) {
new TestPanel();
}

}

[此贴子已经被作者于2007-1-17 2:46:51编辑过]


----------------解决方案--------------------------------------------------------
还有,千里,能不能把你那签名去掉~~
----------------解决方案--------------------------------------------------------
还是你牛
http://bbs.bc-cn.net/BuyPost.asp?boardid=220&replyid=474352&id=474352&rootid=116355&posttable=Dv_bbs2

----------------解决方案--------------------------------------------------------
以下是引用神vLinux飘飘在2007-1-16 23:13:20的发言:
还有,千里,能不能把你那签名去掉~~

我的签名不好吗?

难道改成你的签名?
----------------解决方案--------------------------------------------------------
不是,我见你整天发歌曲,我还以为你把歌曲作为你的签名了呢,既然不是就算了。今天累死我。
----------------解决方案--------------------------------------------------------
p2.setVisible(true) ;这样的语句写在构造函数中,我觉得更精练点

----------------解决方案--------------------------------------------------------
  谢谢你们的指教~~因为我是一个初学者,所以很多东西都不懂,所以多多指教~
----------------解决方案--------------------------------------------------------