中易网

Java面板切换

答案:3  悬赏:80  
解决时间 2021-01-28 03:54
Java面板切换
最佳答案
第一个面板隐藏或者销毁,显示第二个面板不就好了么。。。
全部回答

完全根据逻辑写,按钮动作 可以通过,删除jp1,然后添加jp2,然后刷新界面就可以了
效果图

参考代码如下import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class FrameDemo extends JFrame implements ActionListener {
JPanel jp1,jp2;
JButton jb1,jb2;
public FrameDemo() {
jp1 =new JPanel();
jp1.setBackground(Color.YELLOW);
jb1 =new JButton("出发");
jb1.addActionListener(this);
jp1.add(jb1);

jp2=new JPanel();
jp2.setBackground(Color.RED);
jb2=new JButton("返回");
jb2.addActionListener(this);
jp2.add(jb2);
add(jp1);// 注意这里只添加了jp1 ,没有添加jp2
setTitle("测试窗口");
setSize(236, 200);//窗口大小
setLocationRelativeTo(null);//居中
setDefaultCloseOperation(EXIT_ON_CLOSE);//关闭窗口就结束程序
setVisible(true);//显示
}
@Override
public void actionPerformed(ActionEvent e) {
JButton jb = (JButton) e.getSource();
if(jb==jb1) {//如果是出发按钮被点击. 
this.remove(jp1);//删除jp1
this.add(jp2);//添加jp2
SwingUtilities.updateComponentTreeUI(this);//刷新界面
}else if(jb==jb2) {//如果是返回按钮被点击
this.remove(jp2);
this.add(jp1);
this.validate();
SwingUtilities.updateComponentTreeUI(this);
}
}
public static void main(String[] args) {
new FrameDemo();
}
}
当然了, 还有其他思路,替换这种变化,比如弹出新窗口,关闭旧窗口等等.
如果有多个JPanel切换,效果像相册那样的话 , 也可以使用卡片布局
效果图

参考代码import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class CardDemo extends JFrame implements ActionListener {
JButton jbNext, jbPre, jbFirst, jbLast;
CardLayout cl;//卡片布局
JPanel jpc;//主要的显示面板
public CardDemo() {
jpc = new JPanel();
cl = new CardLayout();
jpc.setLayout(cl);
for (int i = 0; i < 5; i++) {
JPanel jp = new JPanel();
JLabel jl =new JLabel("我是第"+(i+1)+"个标签");
jl.setFont(new Font("宋体", Font.BOLD, 20));
jl.setForeground(getRandomColor());
jp.add(jl);
jpc.add(jp);
}
add(jpc);
JPanel jps = new JPanel();
jbFirst= new JButton("首页");
jbFirst.addActionListener(this);
jbNext = new JButton("下一张");
jbNext.addActionListener(this);
jbPre = new JButton("前一张");
jbPre.addActionListener(this);
jbLast=new JButton("尾页");
jbLast.addActionListener(this);
jps.add(jbFirst);
jps.add(jbPre);
jps.add(jbNext);
jps.add(jbLast);
add(jps,BorderLayout.SOUTH);
setTitle("卡片布局");
setSize(380, 200);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
}
public static void main(String[] args) {
new CardDemo();
}
@Override
public void actionPerformed(ActionEvent e) {
JButton jb = (JButton) e.getSource();
if (jb == jbNext) {
cl.next(jpc);//后一张
} else if (jb == jbPre) {
cl.previous(jpc);//前一张
} else if (jb == jbFirst) {
cl.first(jpc);//第一张
} else if (jb == jbLast) {
cl.last(jpc);//最后一张
}
}
private Color getRandomColor() {
return new Color((int) (Math.random() * 256), (int) (Math.random() * 256), (int) (Math.random() * 256));
}
}
使用CardLayout切换
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
我是在网上买的机票,在哪里可以取到纸质的机
求雨伞的照片
是谁说EA客服懂中文的,我就遇到个不会的
案发多长时间就不能报案了?
不开车的人考驾照有什么好处
我亦只有一个一生,不能慷慨赠与我不爱的人。
形容有坚强毅力的成语有哪些?
半场来回运球上篮怎样才能9秒。。。怎样练习
有DE聊是什么节目?看腾讯、优酷、爱奇艺上面
5y-3.5y等于3.6 求y
学俄语能找什么工作?
2015青岛限价房申请条件是什么?
今天刚处个女朋友,我想和我的女朋友睡在一起
一个10边行从一个顶点出发能引出几个三角形?
pretendtodo和pretendtobedoing有什么区别
推荐资讯
0.5普通玻璃和0.5钢化玻璃厚度一样吗!
重庆城区几个区。是当年将介石划分的吗
伐木的意思是什么?伐木的释义是什么啊?
以专注最爱为题的作文
wow 先知雕像有什么作用?
咏唐诗这首歌 有歌词
什么什么,头高数丈触山回
Bochs怎么安装调试linux
从正规手机店买来的iPhone4s内存为什么只有5.
求解急急急
河北敬业集团敬业钢铁有限公司全称怎么叫
直线在平面外有哪些情况
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?