组件及其事件处理(GUI界面实现)

组件及事件处理

1.GUI 发展

1.1 抽象窗口工具包(AWT)

> Java开发用户界面最初的工具包,所定义的组件为重型组件;
> 通过相应的代理映射成与具体运行平台相关的组件,非常依赖底层平台;
> 不太稳定,对复杂GUI项目不适用

1.2 Swing 组件

> 是轻型组件,对目标机器上的平台依赖较少
> 更少使用本地的GUI资源
> Swing组件类的开头都有前缀字母J
> Swing 是建立在核心AWT库之上

1.3 JavaFX 平台

> 融入现代GUI技术以方便RIA
> 可以无缝地在桌面或者Web浏览器中运行

2.GUI类的三种类型

1.容器类:用来盛装其他GUI组件,:JFrameJPanelJApplet2.辅助类:用来描述GUI组件的属性,如GraphicsColorFontFontMetricsDimension3.组件类:JButtonJDialogJComboBoxJListJRadioButtonJMenu

3.JFrame 框架

3.1 JFrame 类

构造方法:
1.JFrame();//创建一个无标题的框架
2.JFrame(String title);//创建一个标题为title的框架

常用成员方法:
1.public void setVisible(Boolean b);//设置框架是否可见,默认情况下为不可见
2.public void setSize(int width,int height);//设置框架的大小
3.public void setLocate(x,y);//设置框架在屏幕左上角的放置位置(x,y)处
4.public void setBound(int x,int y,int width,int height);//设置框架的初始位置
5.public void setResizable(boolean b);//设置框架是否可调整大小
6.public void setDefaultCloseOperation(int Operation);//设置单击框架右上角关闭图标
package illustration;
import javax.swing.*;
public class MyFrame {
    public static void main(String[] args) {
        JFrame frame = new JFrame("我的窗口");
        frame.setSize(400,300);
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
        frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);
    }
}

结果
在这里插入图片描述

3.2 JMenuBar(菜单栏)

JMenuBar(菜单栏)常用构造方法
1.public JMenuBar();//创建JMenuBar类菜单栏对象

JMenu(菜单)常用构造方法
1.public JMenu();//创建一个空的JMenu对象
2.public JMenu();//使用text作为菜单名创建一个JMenu对象
3.public JMenu(String text,Boolean b);//使用text作为菜单名创建一个JMenu对象,并给出此菜单是否具有下拉式属性
4.public JMenu(Action a);//创建一个支持Action的JMenu对象

JMneuItem(菜单项)常用构造方法;
1.public JMenuItem();//构造一个空的菜单栏对象
2.public JMenuItem(Action a);//创建一个支持Action的菜单项对象
3.public JMenuItem(String text);//使用指定的文本作为菜单项名称创建一个菜单项对象
4.public JMenuItem(Icon icon);//创建一个指定图标的菜单项对象
5.public JMenuItem(String text,Icon icon);
6.public JMenuItem(String text,int mnemonic);//创建一个指定文本和键盘设置快捷键的菜单项对象
package illustration;

public class Example9_2 {
    public static void main(String args[]) {
        WindowMenu win=new WindowMenu("带菜单的窗口",20,30,200,190);
    }
}
package illustration;

import javax.swing.*;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
public class WindowMenu extends JFrame {
    JMenuBar menubar;
    JMenu menu,subMenu;
    JMenuItem  itemLiterature,itemCooking;
    public WindowMenu(){}
    public WindowMenu(String s,int x,int y,int w,int h) {
        init(s);
        setLocation(x,y);
        setSize(w,h);
        setVisible(true);
        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    }
    void init(String s){
        setTitle(s);             //设置窗口的标题
        menubar=new JMenuBar();
        menu=new JMenu("菜单");
        subMenu=new JMenu("体育话题");
        itemLiterature=new JMenuItem("文学话题");
        itemCooking=new JMenuItem("烹饪话题");
        itemLiterature.setAccelerator(KeyStroke.getKeyStroke('A'));
        itemCooking.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK));
        menu.add(itemLiterature);
        menu.addSeparator();   //在菜单之间增加分隔线
        menu.add(itemCooking);
        menu.add(subMenu);
        subMenu.add(new JMenuItem("足球"));
        subMenu.add(new JMenuItem("篮球"));
        menubar.add(menu);
        setJMenuBar(menubar);
    }
}

结果
在这里插入图片描述

4.文本输入组件

4.1 JTextField(文本框)

> JTextField 用来输入或接收显示单行文本信息(字符串)

JTextField常用构造方法
1.public JTextField(int n);//创建一个显示列数为n的空文本框
2.public JTextField(String text);//创建一个初始值为text的文本框
3.public JTextField(string text);//创建一个初始值为text、显示列数为n的文本框

JTextField常用的成员方法
1.int getColumns();//获取文本框的显示列数
2.public void setColumns(int Columns);//设置文本框的显示列数
3.public void setFont(Font font);//设置字体
4.public void setHorizontalAlignment(int align);//设置文本的水平对齐方式
5.public void String getText(); //获取文本框中的文本
6.public void setEditable(Boolean b);//指定文本是否可编辑
7.public void setText(String s);//设置文本框中的文本参数s
package illustration;

public class Example9_3 {
    public static void main(String args[]) {
        ComponentInWindow win=new ComponentInWindow();
        win.setBounds(100,100,450,260);
        win.setTitle("常用组件");
    }
}
package illustration;

import java.awt.*;
import javax.swing.*;
public class ComponentInWindow extends JFrame {
    //复选框
    JCheckBox checkBox1,checkBox2;
    //单选框
    JRadioButton radioM,radioF;
    //下拉列表
    ButtonGroup group;
    JComboBox<String> comBox;
    public ComponentInWindow(){
        init();
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    public void init(){
        setLayout(new FlowLayout());
        comBox = new JComboBox<String>();
        checkBox1 = new JCheckBox("喜欢音乐");
        checkBox2 = new JCheckBox("喜欢旅游");
        group = new ButtonGroup();
        radioM = new JRadioButton("男");
        radioF = new JRadioButton("女");
        group.add(radioM);
        group.add(radioF); //归组实现单选
        add(checkBox1);
        add(checkBox2);
        comBox.addItem("音乐天地");
        comBox.addItem("武术天地");
        add(comBox);
    }
}

结果
在这里插入图片描述

持续更新中…

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值