关于java中面板切换的问题 学java一个月了 最近开始做项目 碰到一个问题 求助各位大大们在JFrame这个顶层容器中 添加一个面板 容器布局是边界布局 比如一个面板添加在中间 另一个面板添加在北面在北面这个面板中加几个按钮 怎样实现点击不同按钮的时候中间的那个面板能够和自己预先在别的类里面写好的面板互相切换 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 掌握两个互换面板的引用,比方说pan1和pan2点击事件中,frame.remove(pan1);frame.add(pan2, BorderLayout.center);这样pan1就被换成pan2了。 把要出现的面板的setVisible()写在button的监听方法里面就可以了。 cardlayout 不就是做这种事的 cardlayou我没有学过 怎么用?还有没有另外的方法能实现? 空谈无益,看代码public class Panels extends JFrame{ public static void main(String[] args) { final JFrame frame = new JFrame("面板切换"); frame.setSize(300, 400); frame.setLayout(new BorderLayout()); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JPanel controls = new JPanel(); frame.add(controls, BorderLayout.NORTH); final JPanel green = new JPanel(); green.setBackground(Color.green); frame.add(green, BorderLayout.CENTER); final JPanel black = new JPanel(); black.setBackground(Color.black); final JPanel red = new JPanel(); red.setBackground(Color.red); JButton toBlack = new JButton("to black"); toBlack.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent e) { frame.remove(green); frame.remove(red); frame.add(black, BorderLayout.CENTER); frame.validate(); frame.repaint(); } }); controls.add(toBlack); JButton toRed = new JButton("to red"); toRed.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent e) { frame.remove(green); frame.remove(black); frame.add(red, BorderLayout.CENTER); frame.validate(); frame.repaint(); } }); controls.add(toRed); frame.setVisible(true); }} CardLayout layout = new CardLayout();JPanel container = new JPanel(layout);container.add(bluePanel,"BLUE");container.add(greenPanel,"GREEN");container.add(redPanel,"RED");public void actionPerformed(ActionEvent e){ layout.show(container,"BLUE"); // 显示蓝色面板 // layout.show(container,"GREEN"); // 绿色} 问一下大家都用什么工具阅读java 源代码? 拖动文件的问题 高人看一下怎么处理这组数据 那个统计的问题(合欢请进) hibernate报错 请问在什么情况下需要用多线程啊? 绘制图形时 (paint 方法) 如何出现滚动条 为什么我的Applet显示不出来? 请问那位大侠知道两个Applect之间是怎传值的 求个java 算法 JAVA客户端程序,使用什么开发界面啊? 多态问题
点击事件中,
frame.remove(pan1);
frame.add(pan2, BorderLayout.center);
这样pan1就被换成pan2了。
public static void main(String[] args) {
final JFrame frame = new JFrame("面板切换");
frame.setSize(300, 400);
frame.setLayout(new BorderLayout());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel controls = new JPanel();
frame.add(controls, BorderLayout.NORTH);
final JPanel green = new JPanel();
green.setBackground(Color.green);
frame.add(green, BorderLayout.CENTER);
final JPanel black = new JPanel();
black.setBackground(Color.black);
final JPanel red = new JPanel();
red.setBackground(Color.red);
JButton toBlack = new JButton("to black");
toBlack.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
frame.remove(green);
frame.remove(red);
frame.add(black, BorderLayout.CENTER);
frame.validate();
frame.repaint();
}
});
controls.add(toBlack);
JButton toRed = new JButton("to red");
toRed.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
frame.remove(green);
frame.remove(black);
frame.add(red, BorderLayout.CENTER);
frame.validate();
frame.repaint();
}
});
controls.add(toRed);
frame.setVisible(true);
}
}
JPanel container = new JPanel(layout);
container.add(bluePanel,"BLUE");
container.add(greenPanel,"GREEN");
container.add(redPanel,"RED");public void actionPerformed(ActionEvent e){
layout.show(container,"BLUE"); // 显示蓝色面板
// layout.show(container,"GREEN"); // 绿色
}