您的位置:首页 > 编程语言 > Java开发

韩顺平 java 第31讲 常用组件

2015-10-09 10:00 405 查看

面板组件 JPanel

为什么有JPanel?

在图形用户界面编程中,如果只是普通的组件布局,可以用前面的三种布局管理器就可以解决,但是在比较复杂的布局要求时,就需要使用布局管理器的组合使用。

怎么用JPanel?

JPanel是面板组件,非顶层容器。

一个界面只能有一个JFrame窗体组件,但是可以有多个JPanel面板组件,而JPanel上也可以使用FlowLayout、BorderLayout、GridLayout等各种布局效果,这样可以组合使用达到较为复杂的布局效果。

package test;

import java.awt.*;
import javax.swing.*;
import javax.swing.*;

public class MyClass extends JFrame{
//定义组件
JButton jb1,jb2,jb3,jb4,jb5,jb6;
JPanel jp1,jp2;

public static void main(String[] args) {
MyClass myclass = new MyClass();
}

public MyClass(){
//创建组件
jb1 = new JButton("1");
jb2 = new JButton("2");
jb3 = new JButton("3");
jb4 = new JButton("4");
jb5 = new JButton("5");
jb6 = new JButton("6");

jp1 = new JPanel();
jp2 = new JPanel();

//添加组件
jp1.add(jb1);
jp1.add(jb2);
jp2.add(jb3);
jp2.add(jb4);
jp2.add(jb5);

this.add(jp1,BorderLayout.NORTH);
this.add(jp2,BorderLayout.SOUTH);
this.add(jb6,BorderLayout.CENTER);

this.setTitle("网格布局演示");
this.setSize(300,200);
this.setLocation(200, 100);
this.setResizable(false);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}




注意事项

Jpanel是JComponent的子类

属于容器类组件,可以加入别的组件

默认布局管理器就是流式布局(FlowLayout)

用户登陆界面涉及到的几个常用组件

文本框 JTextField

密码框 JPasswordField

标签 Jlabel

package test;

import java.awt.*;

import javax.swing.*;
import javax.swing.*;

public class MyClass extends JFrame{
//定义组件
JButton jb1,jb2;
JPanel jp1,jp2,jp3;
JTextField jt;
JPasswordField jpwd;
JLabel jl1,jl2;

public static void main(String[] args) {
MyClass myclass = new MyClass();
}

public MyClass(){
//创建组件
jb1 = new JButton("确认");
jb2 = new JButton("取消");

jp1 = new JPanel();
jp2 = new JPanel();
jp3 = new JPanel();

jt = new JTextField(10);//这里设置宽度
jpwd = new JPasswordField(10);

jl1 = new JLabel("用户名");
jl2 = new JLabel("密  码");

this.setLayout(new GridLayout(3,1));

//添加组件
jp1.add(jl1);
jp1.add(jt);

jp2.add(jl2);
jp2.add(jpwd);

jp3.add(jb1);
jp3.add(jb2);

this.add(jp1);
this.add(jp2);
this.add(jp3);

this.setTitle("用户登陆界面");
this.setSize(300,160);
this.setLocation(200, 100);
this.setResizable(false);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}




复选框、单选框、下拉框、列表框、滑动窗格

复选框组件 JCheckBox

单选框组件 JradioButton

下拉框 JComboBox

列表框 JList

滑动窗格 JScrollPanel

特别说明

同一组单选按钮必须先创建ButtonGroup,然后把单选框组件放入到ButtonGroup中。

一般来说,列表框组件+滑动窗格组件是结合使用的,目的是让列表框中的选项可以有滚动条支持。

package test;

import java.awt.*;
import javax.swing.*;
import javax.swing.*;

public class MyClass extends JFrame{
//定义组件
JButton jb1,jb2;
JPanel jp1,jp2,jp3,jp4,jp5;
JLabel jl1,jl2,jl3,jl4;
JCheckBox jcb1,jcb2,jcb3;
JRadioButton jrb1,jrb2;
ButtonGroup bg;
JComboBox jcb;
JList jlist;
JScrollPane jsp;

public static void main(String[] args) {
MyClass myclass = new MyClass();
}

public MyClass(){
//创建组件
jp1 = new JPanel();
jp2 = new JPanel();
jp3 = new JPanel();
jp4 = new JPanel();
jp5 = new JPanel();

jl1 = new JLabel("你喜欢的运动");
jl2 = new JLabel("性别");
jl3 = new JLabel("籍贯");
jl4 = new JLabel("喜欢的明星");

jcb1 = new JCheckBox("足球");
jcb2 = new JCheckBox("篮球");
jcb3 = new JCheckBox("网球");

jrb1 = new JRadioButton("男");
jrb2 = new JRadioButton("女");

bg = new ButtonGroup();
bg.add(jrb1);
bg.add(jrb2);

String []jg = {"北京","上海","山东"};
jcb = new JComboBox(jg);
String []dd = {"Jay","JJ","蔡依林","陈","那英","周杰伦呢","赵四","赵本山"};
jlist = new JList(dd);
jlist.setVisibleRowCount(3);
jsp = new JScrollPane(jlist);

jb1 = new JButton("注册用户");
jb2 = new JButton("取消注册");

//设置布局
this.setLayout(new GridLayout(5,1));

//添加组件
jp1.add(jl1);
jp1.add(jcb1);
jp1.add(jcb2);
jp1.add(jcb3);

jp2.add(jl2);
jp2.add(jrb1);
jp2.add(jrb2);

jp3.add(jl3);
jp3.add(jcb);

jp4.add(jl4);
jp4.add(jsp);

jp5.add(jb1);
jp5.add(jb2);

this.add(jp1);
this.add(jp2);
this.add(jp3);
this.add(jp4);
this.add(jp5);

this.setTitle("单选框和复选框");
this.setSize(400,300);
this.setLocation(200, 100);
this.setResizable(false);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息