目录

JFrame的使用

创建JFrame对象

JDialog

构造函数:

常用面板JPanel

JScrollPane

设置容器:

标签组件JLabel

构造函数:  

JButton

构造方法:  

其他方法:   

单选按钮组件类

构造方法:   

复选组件框类 JCheckBox

构造方法:

下拉列表组件类 JComboBox

构造方法:

方法:

菜单栏:   

步骤:

文本组件类: JTextField

构造函数:  

其他方法:

密码框组件类:JPasswordField

构造函数:

其他方法:

文本域组件类: JTextArea

构造函数:

其他方法:

布局方式:   

流布局 FlowLayout     

构造方法:   

通过setLayout函数来设置布局

边界布局BorderLayout  

构造方法:

网格式布局管理器 GridLayout

构造方法:

手工布局  

常用的事件监听器:  

使用步骤:

两种监听器:

事件处理详解:

示例代码


java图形化界面设计——容器(JFrame)

JFrame的使用

创建JFrame对象

JFrame jf = new JFrame("我是标题");

jf.setTitle("标题");     //标题设置的两种方式

jf.setSize(1000,600); //窗口大小

jf.setLocation(100,100); //窗口出现在屏幕上的位置

setSize和setLocation可以合并为一个即setBounds() jf.setBounds(100,100,1000,600);

jf.setVisible(true);   // 设置窗口默认是否显示

jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);   //设置关闭方式

JDialog

JDialog 是从一个窗体弹出来的另外一个窗体,和JFrame类似可当成一个JFrame使用,但是必须从属于JFrame

构造函数:

JDialog();
JDialog(Frame f);     指定父窗口
JDialog(Frame f,String title);     指定父窗口+标题

常用面板JPanel

 JPanel就是一种最简单的面板
语法:

JPanel p = new JPanel(100,100,500,300)  //生成面板
JPanel p = new JPanel(new FlowLayout())  //布局管理器

将面板添加进另外的容器中

容器名.add(p);  

JScrollPane

JScrollPane是带滚动条的面板,在碰到需要将一个大的组件放到一个较小的空间的时候,即使用该面板其内只能添加一个组件,如果需要将多个组件添加到一个JScrollPane中时,需要先将需要添加的组件添加到JPanel中,再将JPanel添加进JScrollPane

JScrollPane jp = new JScrollPane(组件)


设置容器:

为JFrame设置一个面板容器,即可以往面板容器中添加组件

jf.setContentPane(jp);


标签组件JLabel

JLabel作用:显示文本或提示信息

构造函数:  

new JLabel();
new JLabel(Icon icon);   //设置图标
new JLabel(Icon icon,int aligment);  //设置图标+水平对齐方式
new JLabel(String str,int aligment); //设置文本+水平对齐方式
SwingConstants.LEFT   左对齐
SwingConstants.CENTER  居中对齐
SwingConstants.RIGHT  右对齐

new JLabel(String str,Icon icon,int sligment);  //设置文本+图标+水平对齐

例如:

JLabel jl = new JLabel();
jl.setText("账号");
jf.add(jl)
jf.setVisible(true);
jf设置关闭方式;

设置字体,风格,字号:

jl.setFont(new Font("微软雅黑",Font.PLAIN,14));

设置文字颜色:使用RGB颜色,百度RGB颜色表

 jl.setForeground(new Color(255,255,255));


设置背景色:

jl.setOpaque(true);   默认背景是透明显示的,所以setOpaque设置为不透明才行
jl.setBackground(new Color(0,0,255));


设置控价大小:

jl.setPreferredSize(new Dimension(60,30));
Dimension指定宽度,高度


设置文本的对齐:

jl.setHorizontalAlignment(SwingConstants.CENTER);

JButton

作用:按钮

构造方法:  

JButton();
JButton(String text);   //指定文字
JButton(Icon icon);    //指定图标
JButton(String text,Icon icon)  //指定文字+图标

其他方法:   

setTooltipText(String text);   //设置提示文字
setBorderPainted();  // 设置边界是否显示
setEnabled();   // 设置按钮是否可用

单选按钮组件类

单选按钮组件类:  JRadioButton ButtonGroup

说明:JRadioButton是一个单选按钮,需要将单选按钮加入到按钮组ButtonGroup中

构造方法:   

JRadioButton();
JRadioButton(Icon icon);  //指定图标
JRadioButton(Icon icon,boolean selected);  //指定图标+是否选中
JRadioButton(String text);   //指定文字
JRadioButton(String text,Icon icon);  //指定文字+图标
JRadioButton(String text,Icon icon,boolean selected);  //指定文字+图标+是否选中


复选组件框类 JCheckBox

构造方法:

JCheckBox();
JCheckBox(Icon icon,boolean checked);  //指定图标+是否选中
JCheckBox(String text,boolean checked); //指定文字+是否选中
其他API:setSelected(boolean) 设置选中状态
boolean isSelected()  是否选中
addActionListener() 勾选或者取消复选框事件


下拉列表组件类 JComboBox

JComboBox<> jcb = new JComboBox<>();

JComboBox是一个泛型,参数类型T表示的是数据项的类型

构造方法:

JComboBox();
JComboBox(ComboBoxModel dataModel);  //使用listModel建立一个下拉列表
JComboBox(Object[] arrayData);
JComboBox(Vector vector);

方法:

.addItem("下拉内容")  //添加下拉内容
.count()  数据项个数
.getItemAt(index)  获取数据项


菜单栏:   

步骤:

1.创建菜单栏  JMenuBar
2.创建菜单   JMenu
3.创建菜单项  JMenuItem
总结:菜单项依附菜单,菜单依附菜单条
注意:添加过的菜单项无法添加给其他菜单

文本组件类: JTextField

构造函数:  

JTextField();
JTextField(String text);    //指定默认文字
JTextField(int fieldwidth);  //指定文本框长度
JTextField(String text,int fieldwidth);  //指定默认文字+文本框长度
JTextField(Document docModel,String text,int fieldwidth);  //指定文本框模式+默认文字+文本框长度


其他方法:

设置文本: jtf.setText(String str)
获取文本: str = jtf.getText()



密码框组件类:JPasswordField


构造函数:

JPasswordField();
JPasswordField(String str);   //指定默认文字
JPasswordField(int fieldwidth);  //指定文本框长度
JPasswordField(String str,int fieldwidth);  //指定默认文字+文本框长度
JPasswordField(Document docModel,String text,int fieldwidth); // 指定文本框模式+默认文字+文本框长

其他方法:

setEchoChar('*');  //设置回显字符


文本域组件类: JTextArea

构造函数:

JTextArea();
JTextArea(String text);  //指定默认文字
JTextArea(int rows,int cols); //指定长+宽
JTextArea(Document doc);  // 指定文本模型
JTextArea(Document doc,String text,int rows,int cols); //指定文本模型+默认文字+长宽

其他方法:

setLineWrap();  //设置文本域是否自动换行
设置控价大小: 组件.setPreferredSize(new Dimension(60,30));


布局方式:
   

流布局 FlowLayout     

所有组件像流一样,一个一个排放,排满了一行之后排下一行,默认情况下,每个组件是居中排列的但也可以设置

构造方法:   

FlowLayout();
FlowLayout(int aligment);  // 设置对齐方式(默认为FlowLayout.CENTER居中)
一般改为FlowLayout.LEFT左对齐
FlowLayout(int aligment,int horizGap,int vertGap);//设置对齐方式+上下偏移

通过setLayout函数来设置布局

例如:jf.setLayout(new FlowLayout(FlowLayout.LEFT));


边界布局BorderLayout  

边界布局是默认的布局管理方式

边界布局将容器分成了

东(BorderLayout.NORTH)
南(BorderLayout.SOUTH)
西(BorderLayout.EAST)
北(BorderLayout.WEST)
中(BorderLayout.CENTER)五个区域

构造方法:

jf.setLayout(new BorderLayout());


在给JFrame容器添加组件的时候指定边界

如: jf.add(button1,BorderLayout.CENTER);



网格式布局管理器 GridLayout

 网格布局是将容器划分为网格,所有的组件都按照行和列排列,网格的个数由行数和列数决定每个组件会填满空格,改变容器的大小,组件的大小也会相应的随之改变

构造方法:

GridLayout(int rows,int columns);  //指定行数列数
GridLayout(int rows,int columns,int horizGap,int vertGap);//指定行数+列数+水平间隔+垂直间隔间隔指网格与网格之间的间距


手工布局  

即不使用布局器    

1.不使用布局器  jp.setLayout(null);
2.添加子控件 jp.add(组件)
3.指定控件的位置  组件.setBounds(0,0,100,50);



常用的事件监听器:  

一个事件模型中有三个对象:事件源,事件,以及监听程序

事件监听机制:

事件源          事件发生的地方
事件                就是要发生的事情
事件处理           就是针对发生的事情做出的处理方案
事件监听            就是把事件源和事件关联起来



使用步骤:

1.新建一个组件(如JButton)
2.将该组件添加到相应的面板(如JFrame)
3.注册监听器以监听事件源产生的事件(如通过ActionListener来响应用户点击按钮)
4.定义处理事件的方法(如在ActionListener中的actionPerformed中定义相应方法)


两种监听器:

(一般用匿名内部类方式实现)--------内部类:即类里面的类
             jla.addFocusListener(new FocusListener(){

                       public void focusLost(FocusEvent e){
                             //失去焦点的时候
                             .................
                       }
                       public void focusGained(FocusEvent e){
                            //获取焦点的时候
                             .................
                       }
              });
                            

 案列:    button1.addActionListener(new AbstractAction(){
                             @Override
                             public void actionPerformed(ActionEvent e) {
                                       jta.append("年轻人好自为之");
                              }
                 });



事件处理详解:

1.添加一个监听器类,实现ActionListener接口

class MyActionListener extends ActionListener{}


2.设置监听器

MyActionListener  listener = new MyActionListener();
button1.addActionListener(listener)

示例代码

//创建JFrame窗口对象

JFrame jf = new JFrame("我是标题"); 
jf.setBounds(100,100,1000,600); 



//面板
        JPanel jp = new JPanel(new FlowLayout());
        jf.add(jp);

        //标签组件
        JLabel jl = new JLabel("我是提示文本信息",SwingConstants.CENTER);
        jl.setText("账号");
        jp.add(jl);

        //按钮组件
        JButton jb = new JButton("按钮1");
        jb.setBounds(100,100,200,100);
        jb.setEnabled(true);
        jb.setBorderPainted(true);
        jp.add(jb);

        //单选按钮组件
        JRadioButton jrb1 = new JRadioButton("单选按钮组件1_男");
        JRadioButton jrb2 = new JRadioButton("单选按钮组件2_女");
        ButtonGroup bg = new ButtonGroup();
        bg.add(jrb1);
        bg.add(jrb2);
        jp.add(jrb1);
        jp.add(jrb2);

        //复选组件框
        JCheckBox jcb1 = new JCheckBox("音乐",false);
        JCheckBox jcb2 = new JCheckBox("视频",false);
        JCheckBox jcb3 = new JCheckBox("游戏",false);
        JCheckBox jcb4 = new JCheckBox("网课",true);
        jp.add(jcb1);
        jp.add(jcb2);
        jp.add(jcb3);
        jp.add(jcb4);

        //下拉列表
        String[] item = {"--请选择你的学历--","高中","专科","本科","研究生"};
        JComboBox jcbb = new JComboBox(item);
        jcbb.addItem("博士");  //与在数组中添加列表相同
        jp.add(jcbb);

        //菜单
        JMenuBar jmb = new JMenuBar();  //菜单条
        JMenu jm1 = new JMenu("菜单1");  //菜单
        JMenu jm2 = new JMenu("菜单2");  //菜单
        JMenuItem jmi1 = new JMenuItem("二级菜单1");  //菜单项
        JMenuItem jmi2 = new JMenuItem("二级菜单2");  //菜单项
        JMenuItem jmi3 = new JMenuItem("二级菜单3");  //菜单项
        jm1.add(jmi3);  //给菜单1添加菜单项

        jm2.add(jmi1);  //给菜单2添加菜单项
        jm2.add(jmi2);

        jmb.add(jm1);  //将菜单添加进菜单条
        jmb.add(jm2);
        jp.add(jmb);

        //文本组件
        JTextField jtf = new JTextField("请输入账号",20);
        jp.add(jtf);

        //密码框组件
        JPasswordField jpw = new JPasswordField("请输入密码",20);
        jpw.setEchoChar('*');
        jp.add(jpw);

        //文本域组件
        JTextArea jta = new JTextArea("请输入文字",10,10);
        jta.setLineWrap(true);
        jp.add(jta);




        jf.setVisible(true);
        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐