目录
一、Java Swing组件之间的继承关系
二、JFrame
JFrame是一个容器,它是各个组件的载体。
1、新建JFrame对象
JFrame jframe = new JFrame(); //创建没有标题的窗口
JFrame jframe = new JFrame(String s); //创建标题为 s 的窗口
//JFrame类的setTitle(String s)方法也可设置标题
2、设置JFrame窗体的大小
frame.setLocationRelativeTo(null);可设置窗口居中显示
//通过JFrame的对象名调用以下方法实现对应功能
public void setSize(int width,int height){} //设置窗口的大小(单位为px)
public void setLocation(int x,int y){} //设置窗口的位置,默认位置是(0,0)
public void setBounds(int a,int b,int width,int height){} //设置窗口的初始位置是(a,b),窗口的宽是width,高是height
public void setVisible(boolean b){} //设置窗口是否可见,默认是false不可见的
public void setResizable(boolean b){} //设置窗口是否可被用户调整大小,默认是ture可调整
public void dispose(){} //撤销当前窗口,并释放当前窗口的所使用的资源
public void setExtentedState(int state){} //设置窗口的扩展状态
/**
* 其中state参数取JFrame类中下列类常量
* MAXIMIZED_HORIZ
* MAXIMIZED_VERT
* MAXIMIZED_BOTH
*/
3、设定JFrame的关闭方式
public void setDefaultCloseOperation(int operation) //该方法用来设置单击窗体右上角的关闭图标后,程序会作出怎样的处理,其中operation参数取JFrame类中的下列int型static常量,程序会根据参数operation的取值作出不同的处理
/**
* DO_NOTHING_ON_CLOSE(什么也不做)
* HIDE_ON_CLOSE(隐藏当前窗口)
* DISPOSE_ON_CLOSE(隐藏当前窗口,并释放窗口所占有的其他资源)
* EXIT_ON_CLOSE(结束窗口所在的应用程序)
/
三、JDialog
继承自java.awt.Dialog类。他是从一个窗体弹出来的另外一个窗体。他和JFrame类似,需要
调用getContentPane将窗体转换为容器,然后在容器中设置窗体的内容。
JDialog:可当成一个JFrame使用,但必须从属于JFrame。JFrame类中的方法JDialog中也都
有,唯一区别就是关闭方式中JDialog没有EXIT_ON_CLOSE。同时因为JDialog从属于JFrame,
所以当JFrame窗口关闭时,JDialog也会被关闭,反之不受影响。
构造函数
JDialog jdialog = new JDialog();
JDialog jdialog = new JDialog(Frame f); //指定父窗口
JDialog jdialog = new JDialog(Frame f,String title); //指定父窗口+标题
四、常用面板
面板也是一种swing容器,他可以作为一个容器添加或容纳其他的组件,但是他也必须在一个
容器内。
1、JPanel
JPanel就是一种最简单的面板,它继承于java.awt.Container类
JFrame jframe = new JFrame("标题");
jframe.setBounds(400,300,1200,1200);
jframe.setVisible(true);
JButton jb = new JButton("按钮"); //new两个按钮组件
JButton jb1 = new JButton("按钮1");
JPanel jp = new JPanel(new FlowLayout()); //生成一个面板
jp.add(jb); //将两个按钮加入到面板中
jp.add(jb1);
jframe.add(jp); //将面板加入到另外的容器中
2、JScrollPane
JScrollPane是带滚动条的面板。因此,再碰到需要将一个大的组件放到一个较小的空间的时候,使用该面板。JScrollPane内只能添加一个组件,因此,如果需要将多个组件添加到一个JScrollPane中时,需要先将需要添加的组件添加到JPanel中,再将JPanel添加到JScrollPane中。
JFrame jframe = new JFrame("标题");
jframe.setBounds(400,300,1200,1200);
jframe.setVisible(true);
JButton jb = new JButton("按钮");
jb.setSize(800,200); //设置按钮组件的尺寸
JScrollPane jp = new JScrollPane(jb); //把按钮组件放在JScrollPane中
jframe.add(jp);
五、常用的组件
1、JLabel标签组件
显示文本或提示信息
构造方法
JLabel jlabel = new JLabel();
JLabel jlabel = new JLabel(String str); //设置文本
JLabel jlabel = new JLabel(Icon icon); //设置图标
JLabel jlabel = new JLabel(String str,int aligment); //设置文本+水平对齐方式(LEFT、CENTER、RIGHT)
JLabel jlabel = new JLabel(String str,Icon icon,int aligment); //设置文本+图标+水平对齐方式
JFrame jf = new JFrame("标题");
jf.setBounds(400,300,1000,1000);
JLabel jl = new JLabel();
jl.setText("账号:");
jl.setFont(new Font("宋体",Font.PLAIN,30)); //设置标签的字体,尺寸等
jf.add(jl);
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
2、JButton按钮组件
构造方法
JButton jb = new JButton();
JButton jb = new JButton(String text); //指定文字
JButton jb = new JButton(Icon icon); //指定图标
JButton jb = new JButton(String text,Icon icon); //指定文字+图标
其他方法
setEnabled(boolean n); //设置按钮是否可用
setBorderPainted(boolean n); //设置边界是否显示,默认是显示的
(1)单选按钮组件
JRadioButton是一个单选按钮,需要将单选按钮加入到ButtonGroup按钮组中。
构造方法
JRadioButton jrb = new JRadioButton();
JRadioButton jrb = new JRadioButton(String text); //指定文字
JRadioButton jrb = new JRadioButton(String text,boolean selected); //指定文字+是否选中
示例
JFrame jf = new JFrame("标题");
jf.setLayout(new FlowLayout());
jf.setBounds(400,300,1000,1000);
JRadioButton jrb = new JRadioButton("男");
JRadioButton jrb1 = new JRadioButton("女");
ButtonGroup bg = new ButtonGroup();
bg.add(jrb);
bg.add(jrb1);
jf.add(jrb);
jf.add(jrb1);
(2)复选组件框
JCheckBox
构造方法
JCheckBox jb = new JCheckBox();
JCheckBox jb = new JCheckBox(String text,boolean checked); //指定文字+是否被选中
示例
JFrame jf = new JFrame("标题");
jf.setBounds(400,300,1000,1000);
JCheckBox jcb1 = new JCheckBox("篮球");
JCheckBox jcb1 = new JCheckBox("游戏");
JCheckBox jcb1 = new JCheckBox("睡觉");
JCheckBox jcb1 = new JCheckBox("学习");
jf.add(jcb1);
jf.add(jcb2);
jf.add(jcb3);
jf.add(jcb4);
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
(3)下拉列表框组件
构造方法
JComboBox jb = new JComboBox();
//addItem添加下拉内容
示例
JFrame jf = new JFrame("标题");
jf.setLayout(new FlowLayout());
jf.setBounds(400,300,1000,1000);
JComboBox box = new JComboBox();
box.addItem("--请选择你的学历--");
box.addItem("高中");
box.addItem("大学");
box.addItem("研究生");
jf.add(box);
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
3、菜单栏
(1)创建菜单栏:JMenuBar
(2)创建菜单:JMenu
(3)创建菜单项:JMenuItem
//菜单项依附于菜单,菜单依附于菜单栏
JFrame jf = new JFrame("标题");
jf.setLayout(new FlowLayout());
jf.setBounds(400,300,1000,1000);
JMenuBar bar = new JMenuBar();
JMenu menu = new JMenu("菜单1");
JMenuItem item1 = new JMenuItem("菜单项1");
JMenuItem item2 = new JMenuItem("菜单项2");
JMenuItem item3 = new JMenuItem("菜单项3");
menu.add(item1);
menu.add(item2);
menu.add(item3);
bar.add(menu);
jf.add(bar);
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
4、文本组件
构造函数
JTextField text = new JTextField();
JTextField text = new JTextField(String text); //指定默认文字
JTextField text = new JTextField(int fieldWidth); //指定文本框长度
JTextField text = new JTextField(String text,int fieldWidth); //指定默认文字+文本框长度
示例
JFrame jf = new JFrame("标题");
jf.setLayout(new FlowLayout());
jf.setBounds(400,300,1000,1000);
JLabel label = new JLabel("账号");
JTextField text = new JTextField("请输入",20);
jf.add(lable);
jf.add(text);
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
5、密码框组件
构造函数
JPasswordField pwd = new JPasswordField();
JPasswordField pwd = new JPasswordField(String str); //指定默认文字
JPasswordField pwd = new JPasswordField(int fiedWidth); //指定文本框长度
JPasswordField pwd = new JPasswordField(String str,int fiedWidth); //指定默认文字+文本框长度
示例
//setEchoChar('*') 显示回显字符,默认·
JFrame jf = new JFrame("标题");
jf.setLayout(new FlowLayout());
jf.setBounds(400,300,1000,1000);
JLabel label = new JLabel("密码:");
JPasswordField text = new JPasswordField("请输入密码",20);
jf.add(lable);
jf.add(text);
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
6、文本域组件
构造函数
JTextArea area = new JTextArea();
JTextArea area = new JTextArea(String text); //指定默认文字
JTextArea area = new JTextArea(int rows,int cols); //指定行+列
示例
//setLineWrap(boolean x); 设置文本域是否自动换行
JFrame jf = new JFrame("标题");
jf.setLayout(new FlowLayout());
jf.setBounds(400,300,1000,1000);
JTextArea area = new JTextArea(12,20);
jf.add(area);
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
六、常用布局
1、流布局FlowLayout
所有组件像流一样,一个一个排放,排满了一行之后就排下一行,默认情况下,每个组件是
居中排列的,但是也可以设置。
构造函数
FlowLayout fl = new FlowLayout();
FlowLayout fl = new FlowLayout(int aligment); //设置对齐方式(默认FlowLayout.CENTER居中)
/**
* aligment取值:
* FlowLayout.LEFT = 0
* FlowLayout.CENTER = 1
* FlowLayout.RIGHT = 2
*/
示例
//一般都通过setLayout方法来设置布局,例如jf.setLayout(new FlowLayout(FlowLayout.LEFT));
JFrame jf = new JFrame("标题");
jf.setLayout(new FlowLayout());
jf.setBounds(400,300,1000,1000);
JButton jb = new JButton("A");
JButton jb1 = new JButton("B");
jf.add(jb);
jf.add(jb1);
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
2、边界布局BorderLayout
边界布局是默认的布局管理方式,边界布局将容器分为了北(BorderLayout.NORTH)、南
(BorderLayout.SORTH)、东(BorderLayout.EAST)、西(BorderLayout.WAST)、中
(BorderLayout.CENTER)5个区域。
示例
//再给JFrame容器add组件的时候,指定边界
JFrame jf = new JFrame("标题");
jf.setLayout(new BorderLayout());
jf.setBounds(400,300,1000,1000);
JButton jb = new JButton("中部");
JButton jb1 = new JButton("西部");
jf.add(jb,BorderLayout.CENTER);
jf.add(jb1,BorderLayout.WEST);
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
3、网格布局
网格布局是将容器分为网格。所有的组件都按照行和列排列,网格的个数由行数和列数决
定。每个组件会填满空格,改变容器的大小,组建的大小也会随之改变。
构造方法
GridLayout gl = new GridLayout(int rows,int columns); //指定行数+列数
GridLayout gl = new GridLayout(int rows,int columns,int horizGap,int vertGap) //指定行数+列数+水平间隔+垂直间隔
示例
JFrame jf = new JFrame("标题");
jf.setLayout(new GridLayout(2,2));
jf.setBounds(400,300,1000,1000);
JButton jb = new JButton("A");
JButton jb1 = new JButton("B");
JButton jb2 = new JButton("C");
JButton jb3 = new JButton("D");
jf.add(jb);
jf.add(jb1);
jf.add(jb2);
jf.add(jb3);
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
七、常用的事件监听器
事件 | 监听接口 | 方法 | |
动作事件监听器 | ActionEvent | ActionListener | addActionListener(); removeActionListener(); |
焦点事件监听器 | FocusEvent | FocusListener | addFocusListener(); removeFocusListener(); |
使用步骤
(1)新建一个组件(如Button)
(2)将该组件添加到相应的容器(如JFrame)
(3)注册监听器以监听事件源产生的事件(如通过ActionListener来响应用户点击按钮)
(4)定义处理事件的方法(如在ActionListener中的actionPerformed中定义相应方法)
示例
JFrame jf = new JFrame("标题");
jf.setLayout(new FlowLayout());
jf.setBounds(400,300,1000,1000);
JButton jb = new JButton("A");
jb.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
此处重写方法,要让此按钮做什么
}
});
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
八、JTable
JTable是表格组件,需要看成两个部分,表格的标题和表格的内容,但是真正操作这两部分
的是DefaultTableModel对象,而且操作完成后需要把JTable对象放进JPanel或JScrollPane面板等
容器里,所以他们的层次关系是:
JScrollPane
JTable
DefaultTableModel