【JAVA编程】创建Frame类型窗口,在窗口中添加两个不同颜色的Panel面板,每个面板中添加两个按钮组件、、

【JAVA编程】创建Frame类型窗口,在窗口中添加两个不同颜色的Panel面板,每个面板中添加两个按钮组件、、,第1张

setBackground设置背景色!

布局随便选,下面程序使用了边框(BorderLayout)和流水(FlowLayout)2种布局方式!

顺便帮你加了一个按钮事件!有问题再追问吧!~

import java.awt.BorderLayout

import java.awt.Color

import java.awt.Container

import java.awt.FlowLayout

import java.awt.event.ActionEvent

import java.awt.event.ActionListener

import javax.swing.JButton

import javax.swing.JFrame

import javax.swing.JLabel

import javax.swing.JPanel

public class Test extends JFrame implements ActionListener {

private JPanel panel0 = null, panel2 = null

private JButton b1 = null, b2 = null, b3 = null, b4 = null

public Test() {

Container c = this.getContentPane()

//边框布局

c.setLayout(new BorderLayout())

//创建panel

panel0 = new JPanel()

panel2 = new JPanel()

//为2个panel设置底色

panel0.setBackground(Color.red)

panel2.setBackground(Color.BLUE)

//2个panel都是用流水布局

panel0.setLayout(new FlowLayout())

panel2.setLayout(new FlowLayout())

//创建按钮

b1 = new JButton("panel2黄色")

b2 = new JButton("panel2绿色")

b3 = new JButton("panel0橙色")

b4 = new JButton("panel0灰色")

/**

* 添加按钮事件

*/

b1.addActionListener(this)

b2.addActionListener(this)

b3.addActionListener(this)

b4.addActionListener(this)

/**

* 将按钮添加相应panel上

*/

panel0.add(b1)

panel0.add(new JLabel())

panel0.add(b2)

panel2.add(b3)

panel2.add(b4)

/**

* 将panel添加到容器

*/

c.add(panel0, BorderLayout.CENTER)

c.add(panel2, BorderLayout.EAST)

this.setSize(500, 500)

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)

this.setVisible(true)

}

public static void main(String[] args) {

new Test()

}

@Override

public void actionPerformed(ActionEvent e) {

// TODO Auto-generated method stub

if (e.getSource() == b1) {

panel2.setBackground(Color.yellow)

} else if (e.getSource() == b2) {

panel2.setBackground(Color.green)

} else if (e.getSource() == b3) {

panel0.setBackground(Color.ORANGE)

} else if (e.getSource() == b4) {

panel0.setBackground(Color.GRAY)

}

}

}

答: JFrame中, 可以通过 jframe.remove(组件) 方法删除指定的组件 ,也可以通过jframe.add(组件) 方法来添加新的组件 . 值得注意的是,添加和删除组件之后,都需要更新窗口 , 否则可能显示异常

效果图

jp1 里输入用户名, 不能为空

jp1里输入了用户名

jp1被删除,然后显示jp2

参考代码

import javax.swing.*

import java.awt.event.*

public class PanelFrame extends JFrame implements ActionListener {

JPanel jp1, jp2

JTextField jtf

JButton jb1

JLabel jl2

public PanelFrame() {

jp1 = new JPanel()

JLabel jl1 = new JLabel("请输入用户名")

jtf = new JTextField(8)

jb1 = new JButton("确定")

jb1.addActionListener(this)

jp1.add(jl1)

jp1.add(jtf)

jp1.add(jb1)

add(jp1)

// 窗口属性设置

setTitle("Demo")// 标题

setSize(380, 180)// 窗口大小

setLocationRelativeTo(null)// 窗口居中

setDefaultCloseOperation(EXIT_ON_CLOSE)// 窗口点击关闭时,退出程序

}

public static void main(String[] args) {

new PanelFrame().setVisible(true)

}

@Override

public void actionPerformed(ActionEvent e) {

if(jb1==e.getSource()) {

String name = jtf.getText().trim()

if(name.equals("")) {//验证是否输入了有效的字符串

JOptionPane.showMessageDialog(this, "请输入用户名~!")

return

}

remove(jp1)//删除jp1

jp2 = new JPanel()

jl2 = new JLabel()

jp2.add(jl2)

jl2.setText("欢迎:"+name)

add(jp2)//添加jp2

SwingUtilities.updateComponentTreeUI(this)//更新窗口!!

}

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11809435.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存