- _nosay
JPanel面板以及文本框和标签,下列列表,滚动条
2017-12-11 15:49:26
很多情况下,我们的一个软件需要不止一种的布局方式,这样的话我们就需要把窗体切分成若干个面板,在面板中我们定义我们所需要的布局方式,如边界布局,流布局或网格布局。这时就需要引入一个概念,JPanel
下面是一段简单代码
import javax.swing.*;
import java.awt.*;
public class Test extends JFrame {
JPanel jp1,jp2;
JButton btn1,btn2,btn3,btn4,btn5;
public static void main(String[] args)
{
Test test = new Test();
}
public Test()
{
jp1 = new JPanel(); //HPanel 默认是流布局
jp2 = new JPanel();
btn1 = new JButton("可乐");
btn2 = new JButton("红茶");
btn3 = new JButton("绿茶");
btn4 = new JButton("啤酒");
btn5 = new JButton("矿泉水");
jp1.add(btn1);
jp1.add(btn2);
jp2.add(btn3);
jp2.add(btn4);
//添加组件时,先将panel上的组件添加完毕,再添加iframe上的组件
this.add(jp1,BorderLayout.SOUTH);
this.add(jp2,BorderLayout.NORTH);
this.add(btn5); //边界布局被添加在中间的组件可以不写第二个参数
this.setTitle("布局综合应用");
this.setSize(380,220);
this.setLocation(200,200);
this.setResizable(false);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
}
下面是一个简单的用户登陆界面的代码实现
import javax.swing.*;
import java.awt.*;
public class Test extends JFrame {
JPanel jp1,jp2,jp3;
JButton bt1,bt2;
JLabel bq1,bq2;
JTextField wbk;
JPasswordField mmk;
public static void main(String[] args)
{
Test test = new Test();
}
public Test()
{
jp1 = new JPanel();
jp2 = new JPanel();
jp3 = new JPanel();
bt1 = new JButton("登陆");
bt2 = new JButton("取消");
bq1 = new JLabel("用户名:");
bq2 = new JLabel("密 码:");
wbk = new JTextField(10);
mmk = new JPasswordField(10);
this.setLayout(new GridLayout(3,1)); //指定为网格布局
jp1.add(bq1);
jp1.add(wbk);
jp2.add(bq2);
jp2.add(mmk);
jp3.add(bt1);
jp3.add(bt2);
this.add(jp1);
this.add(jp2);
this.add(jp3);
this.setTitle("用户登陆");
this.setSize(230,130);
this.setLocation(300,280);
this.setResizable(false);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
}
运行结果如图
接下来是单选和多选的布局简单代码
import javax.swing.*;
import java.awt.*;
public class Test extends JFrame {
JPanel mb1,mb2,mb3;
JButton an1,an2;
JLabel bq1,bq2;
JCheckBox fxk1,fxk2,fxk3;
JRadioButton dx1,dx2;
ButtonGroup dxz; //把单选按钮放进一个组里,默认只能选择一个
public static void main(String[] args)
{
Test test = new Test();
}
public Test()
{
mb1 = new JPanel();
mb2 = new JPanel();
mb3 = new JPanel();
bq1 = new JLabel("特长");
bq2 = new JLabel("性别");
an1 = new JButton("注册");
an2 = new JButton("取消");
fxk1 = new JCheckBox("音乐");
fxk2 = new JCheckBox("体育");
fxk3 = new JCheckBox("文艺");
dx1 = new JRadioButton("男");
dx2 = new JRadioButton("女");
dxz = new ButtonGroup();
dxz.add(dx1);
dxz.add(dx2); //添加进组,使其只能选中其中一个
this.setLayout(new GridLayout(3,1)); //网格布局
mb1.add(bq1);
mb1.add(fxk1);
mb1.add(fxk2);
mb1.add(fxk3);
mb2.add(bq2);
mb2.add(dx1);
mb2.add(dx2);
mb3.add(an1);
mb3.add(an2);
this.add(mb1);
this.add(mb2);
this.add(mb3);
this.setTitle("用户注册");
this.setSize(240,150);
this.setLocation(300,280);
this.setResizable(false);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
}
运行结果如图
下面是一个下拉列表以及滚动的简单代码
import javax.swing.*;
import java.awt.*;
public class Test extends JFrame {
JPanel mb1,mb2;
JLabel bq1,bq2;
JComboBox xlk;
JList lb;
JScrollPane gd;
public static void main(String[] args)
{
Test test = new Test();
}
public Test()
{
mb1 = new JPanel();
mb2 = new JPanel();
bq1 = new JLabel("地区");
bq2 = new JLabel("学历");
String[] dq = {"北京","上海","天津","安徽"};
xlk = new JComboBox(dq);
String[] xl = {"高中","大专","本科"};
lb = new JList(xl);
lb.setVisibleRowCount(2);
gd = new JScrollPane(lb);
this.setLayout(new GridLayout(2,1));
mb1.add(bq1);
mb1.add(xlk);
mb2.add(bq2);
mb2.add(gd);
this.add(mb1);
this.add(mb2);
this.setTitle("用户调查");
this.setSize(200,190);
this.setLocation(300,280);
this.setResizable(false);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
}
执行结果如图