java 切换面板_Java面板切换

本文介绍了两种Java中实现面板切换的方法:一种是通过删除并添加JPanel实现,另一种是利用CardLayout布局管理器进行切换。提供了详细的代码示例,包括出发和返回按钮的逻辑以及卡片布局的多面板切换。
摘要由CSDN通过智能技术生成

展开全部

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

效果图

06df6501521c157a78abb98c249c802e.gif

参考代码如下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切换,效果像相册那样的话 , 也可以使用卡片布局

效果图

6282cf3feb0fb1a570935d2e96c2cd4f.gif

参考代码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 

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));

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值