当前位置: 代码迷 >> Java相关 >> 替换问题
  详细解决方案

替换问题

热度:99   发布时间:2006-09-20 18:57:08.0
替换问题
我想在JFrame里添加2个JPanel,一开始第1个JPanel是显示的,第2个JPanel是隐藏的,然后在第一个JPanel里加入一个按钮,在按了这个按钮之后可以让第1个JPanel隐藏,第2个JPanel显示,这个代码该怎么写啊??我写了段还是有问题的!
搜索更多相关的解决方案: 隐藏  

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

出了什么问题 发出来啊
还有代码


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

代码如下:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Untitled1
extends JFrame implements ActionListener {
JFrame jf;
JPanel jp1;
JPanel jp2;
JButton jb1;
JLabel jl;
JLabel jll;
BorderLayout br;
public void test() {
setTitle("1234");
br = new BorderLayout();
jp1 = (JPanel) getContentPane();
jp2 = (JPanel) getContentPane();
jl = new JLabel("12345");
jll = new JLabel("54321");
jb1 = new JButton("点我啊");
jb1.add(jp1);
jl.add(jp1);
jll.add(jp2);
this.setVisible(true);
jp1.setVisible(true);
jp2.setVisible(false);
setSize(400, 300);
jb1.addActionListener(this);
}

public void actionPerformed(ActionEvent e) {
this.setVisible(true);
jp1.setVisible(false);
jp2.setVisible(true);

}

public static void main(String[] args) {
Untitled1 ts = new Untitled1();
}
}

能够通过编译,可是运行下来什么都没有!要怎么改啊??


----------------解决方案--------------------------------------------------------
你把所用东西放在test()方法里
却没有用它阿!!!!!
还有就是
jb1.add(jp1);
jl.add(jp1);
jll.add(jp2);
应该是jpanel.add(jbutton//jlabel);!!!!!!!!!!!!!!!!!!!!

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


太粗心了
可是为什么出来的面板上什么都没有啊???
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Untitled1
extends JFrame implements ActionListener {
JFrame jf;
JPanel jp1;
JPanel jp2;
JButton jb1;
JLabel jl;
JLabel jll;
BorderLayout br;
public void test() {
setTitle("1234");
br = new BorderLayout();
jp1 = (JPanel) getContentPane();
jp2 = (JPanel) getContentPane();
jl = new JLabel("12345");
jll = new JLabel("54321");
jb1 = new JButton("点我啊");
jp1.add(jl, java.awt.BorderLayout.CENTER);
jp1.add(jb1, java.awt.BorderLayout.WEST);
jp2.add(jll, java.awt.BorderLayout.CENTER);
jp1.setVisible(true);
jp2.setVisible(false);
setSize(400, 300);
setVisible(true);
jb1.addActionListener(this);
}

public void actionPerformed(ActionEvent e) {
jp1.setVisible(false);
jp2.setVisible(true);

}

public static void main(String[] args) {
Untitled1 ts = new Untitled1();
ts.setDefaultCloseOperation(EXIT_ON_CLOSE);
ts.test();
}
}


----------------解决方案--------------------------------------------------------
jp1 = (JPanel) getContentPane();
jp2 = (JPanel) getContentPane();


这样得到的是重复的引用
当然会出问题
你直接构造两个 JPanel不就可以了吗
----------------解决方案--------------------------------------------------------
斑竹我有些糊涂了,重新构造JPanel不用再添加到面板里了吗??如果要的话不是和我上面写的一样了吗?
----------------解决方案--------------------------------------------------------

你试一下jp1=new JPanel();jp2=new JPanel();
这样的


----------------解决方案--------------------------------------------------------
添加了不行啊!什么JFrame里什么都没有,是空的!能不能给段代码啊!
----------------解决方案--------------------------------------------------------
这代码一点可读性都没有,看也是浪费时间
----------------解决方案--------------------------------------------------------
  相关解决方案