Java--GUI编程

目录

GUI的概念

Swing概述

​编辑

容器组件

布局管理器

常用组件

对话框

内部类


GUI的概念

GUI(Graphics User Interface),图形用户界面,是指采用图形方式显示的计算机操作用户界面,是计算机与其使用者之间的对话接口,是计算机系统的重要组成部分。它能够使应用程序看上去更加友好

Swing概述

 * JFrame           窗口
* JPanel           面板(流式布局,边界布局,网格布局)
* JTextFiled       单行文本输入框
* JLable           标签
* JPasswordFiled   密码框组件
* JTextArea        多行文本输入框
* JScrollPane      滚动面板

容器组件

组件是一个以图形化的方式显示在屏幕上能够与用户进行交互的对象,不能独立显示,必须放在一定的容器中。

容器可容纳多个组件,用add方法添加组件进容器

窗口Frame和面板Panel是最常用的容器

JFrame(框架)

用于在Swing中创建窗体

通过get()方法就可以获得此框架的内容面板

或者自己创建一个JPanel面板对象,把它作为一个组件加到容器中

public class Demo1JFrame extends JFrame {
    public Demo1JFrame() throws HeadlessException {
        this.setSize(500, 300);//设置窗口的大小
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭窗口选项
        // this.setLocation(450,500);//位置坐标
        this.setResizable(false);//禁止设置窗口大小
        this.setLocationRelativeTo(null);//相对位置 水平垂直居中
        this.setTitle("欢迎登录");//窗口标题      
        this.setVisible(true);//显示窗口
        this.dispose();//关闭窗口
    }
    public static void main(String[] args) {
        Demo1JFrame d = new Demo1JFrame();
    }
}

JPanel(面板)

提供面板,是轻量级别的容器,一般使用面板来实现布局嵌套

 //面板,可以看成是一个空间,但不能单独存在
        //流式布局
        JPanel jp = new JPanel();//默认是流式布局
        jp.setBackground(PINK);//设置背景颜色
        jp.setLayout();//设置页面布局
        this.add(jp);//将面板加入JFrame
        this.setVisible(true);//显示窗口
菜单组件
   JMenuBar();//创建菜单
  JMenu();//菜单名称
JMenuItem();//菜单项名称
setJMenuBar(menuBar);//将菜单栏添加到窗口

布局管理器

每个Jpanel 都有一个布局管理器

常用的布局管理器:流式布局,边界布局BorderLayout和网格布局GridLayout

 //面板,可以看成是一个空间,但不能单独存在
        //流式布局
        JPanel jp = new JPanel();//默认是流式布局
        jp.setBackground(PINK);//设置背景颜色
        this.add(jp);//将面板加入JFrame
        this.setVisible(true);//显示窗口
        JButton jb = new JButton("登录");
        jp.add(jb);

  JPanel jp = new JPanel(new BorderLayout());
        //边界布局
        JButton jb1 = new JButton("登录1");
        JButton jb2 = new JButton("登录2");
        JButton jb3 = new JButton("登录3");
        jp.add(jb1, BorderLayout.EAST);
        jp.add(jb2, BorderLayout.SOUTH);
        jp.add(jb3);
        this.add(jp);
        this.setVisible(true);//显示窗口

 JPanel jp = new JPanel(new GridLayout(2, 2));
        //网格布局
        JButton jb1 = new JButton("登录1");
        JButton jb2 = new JButton("登录2");
        JButton jb3 = new JButton("登录3");
        JButton jb4 = new JButton("登录4");
        jp.add(jb1);
        jp.add(jb2);
        jp.add(jb3);
        jp.add(jb4);
        this.add(jp);

常用组件

JLabel(标签)

 JLabel label = new JLabel("账号");
        label.setForeground(Color.PINK);//设置背景颜色
        label.setFont(new Font("宋体", Font.BOLD, 20));//设置字体

JTextField(单行文本)

 JTextField accountText = new JTextField(15);
 accountText.setText("你好");

JTextArea(多行文本框)

 JTextArea ja=new JTextArea(5,15);
 ja.setLineWrap(true);//自动换行

JScrollPane(滚动条)

JScrollPane js=new JScrollPane(ja);//滚动条
jp.add(js);

JPasswordField(密码框)

 JPasswordField passwordField=new JPasswordField(15);
        passwordPanel.add(passwordLabel);
        passwordLabel.add(passwordField);

JButton(按钮)

 JButton loginBtn=new JButton("登录");
         btnPanel.add(loginBtn);

菜单栏组件

  JMenuBar jMenuBar=new JMenuBar();

        d.setJMenuBar(jMenuBar);
        JMenu jm = new JMenu("菜单");
        jMenuBar.add(jm);
        JMenuItem ji = new JMenuItem("文件");
        JMenuItem ji1 = new JMenuItem("保存");
        jm.add(ji);
        jm.add(ji1);

事件处理

当我们点击一个按钮时,或者用键盘输入字符,或者是点击鼠标时,我们应该如何处理这个事件。

事件监听:

 jb.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                String account = null;               
                    }
                }

对话框

JOptionPane:

showMessageDialog(消息对话框)

消息类型:

     ERROR_MESSAGE                     错误消息提示
     INFORMATION_MESSAGE         信息提示
     WARNING_MESSAGE                 警告提示
     QUESTION_MESSAGE                问题提示
     PLAIN_MESSAGE                        简洁提示

showConfirmDialog(确认对话框)

     DEFAULT_OPTION                   默认选项   
     YES_NO_OPTION                    是/否选项
     YES_NO_CANCEL_OPTION   是/否/取消选项
     OK_CANCEL_OPTION             确定/取消

​
 jb.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                String account = null;
                if (account.length() > 10) {
                    JOptionPane.showMessageDialog(null, "你好", "就是你", JOptionPane.QUESTION_MESSAGE);
                    int res = JOptionPane.showConfirmDialog(null, "小朋友", "很能吃", JOptionPane.YES_NO_OPTION);

                    System.out.println(res);
                    if (res == 0) {
                        return;
                    }
                }

​

内部类

内部类是java对类的一种定义方式,是嵌套的一个分类。
非静态嵌套类(内部类)可访问其外围类的其他成员,即使这些成员被声明为私有的。
静态内部类,只能访问外部类中静态成员

内部类分为:

成员内部类   

public class Outer {

    int num = 10;

    public void eat() {
        new Inner();
    //一般在本类中使用内部类
    }
    //在一个类的内部定义的类称为内部类
    class Inner {

        public void test() {
            System.out.println(num);//在内部类中可以直接使用外部类中的成员
        }

    }
}

静态内部类   

 //静态内部类,只能访问外部类中静态成员
private static int num1=20;
    class Inner {

        public void test() {
            System.out.println(num1);
        }

    }

    public static void main(String[] args) {

    }
}

局部内部类   

jb.addActionListener(new ActionListener() {
           //将只在本类中使用的功能,定义在内部类中,实现封装,在哪儿使用,new内部类即可
           class MyAction implements ActionListener{

               @Override
               public void actionPerformed(ActionEvent e) {
                   System.out.println("被点击了");
                   System.out.println(accountText.getText());//使用外部类的成员
               }
           }

匿名内部类

 accountText.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                System.out.println("被点击了");
                System.out.println(accountText.getText());
            }
        });

内部类特点:

是独立的类

不能用普通的方式访问,内部可以自由访问外部类的成员变量

声明成静态的,就不能随便访问外部类的成员变量,只能访问外部类的静态成员变量

意义:

封装性

实现多继承

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Java GUI编程是使用Java语言创建图形用户界面(GUI)的过程。Java提供了多种GUI库,包括Swing、JavaFX等。 使用Swing创建GUI的基本步骤如下: 1. 导入必要的Swing类库 2. 创建一个顶层容器(如JFrame) 3. 设置容器属性(如标题、大小、关闭操作等) 4. 创建需要展示的组件(如JLabel、JTextField、JButton等) 5. 将组件添加到容器中 6. 注册事件监听器(如按钮点击事件) 7. 显示GUI 下面是一个简单的Swing程序示例,创建了一个带有"Hello World"标签和一个按钮的窗口: ```java import javax.swing.*; public class HelloWorldGUI { public static void main(String[] args) { JFrame frame = new JFrame("Hello World GUI"); frame.setSize(300, 200); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JLabel label = new JLabel("Hello World"); JButton button = new JButton("Click me!"); JPanel panel = new JPanel(); panel.add(label); panel.add(button); frame.add(panel); button.addActionListener(e -> { JOptionPane.showMessageDialog(frame, "Hello World!"); }); frame.setVisible(true); } } ``` 除了Swing,JavaFX是另一个流行的GUI库,它提供了更现代化的UI风格和更好的性能。JavaFX的使用方式与Swing有些不同,但也非常简单。 ### 回答2: JAVA GUI编程是使用Java编程语言来创建图形用户界面(GUI)的过程。GUI提供了一种直观和交互式的方式来与应用程序进行通信,使用户对应用程序的操作更加方便和友好。 JAVA GUI编程的主要特点包括以下几点: 1. 跨平台性:由于JAVA是一种跨平台的编程语言,可以在不同的操作系统上运行。使用JAVA GUI编程可以很容易地创建一次代码,然后在不同的平台上运行,无需额外的修改。 2. 组件丰富:JAVA提供了丰富的GUI组件库,如按钮、文本框、标签、下拉框等,开发者可以根据需求选择合适的组件来构建用户界面。 3. 事件驱动编程JAVA GUI编程是基于事件驱动的。开发者可以为每个组件定义事件处理程序,当用户与组件交互时,相应的事件被触发,然后执行相应的操作。 4. 面向对象:JAVA是一种面向对象的编程语言GUI编程也是基于面向对象的。通过继承、封装和多态等特性,可以构建出灵活和可扩展的GUI应用程序。 5. 可以与其他技术集成:JAVA GUI编程可以与其他技术集成,如数据库、网络编程等。这使得开发者可以轻松地将GUI应用程序与其他应用程序进行通信和交互。 总而言之,JAVA GUI编程是一种方便、可扩展和跨平台的方法,适用于开发各种类型的图形用户界面应用程序。无论是开发桌面应用程序还是移动应用程序,使用JAVA GUI编程都能够提供良好的用户体验和易用性。 ### 回答3: JAVA GUI编程是指使用JAVA编程语言开发图形用户界面(Graphical User Interface,简称GUI)的应用程序。GUI是一种以图形界面为用户与计算机进行交互的方式。 GUI编程主要涉及以下几个方面: 1. 组件:JAVA提供了许多的组件,例如按钮、文本框、下拉框等,用于构建图形界面。通过这些组件,我们可以将用户输入的信息进行处理,实现程序的功能。 2. 事件驱动:在GUI编程中,用户的操作会触发相应的事件,例如点击按钮、输入文本等。我们可以通过监听这些事件,编写相应的处理代码,实现程序逻辑的控制。 3. 布局管理:GUI界面中的组件需要根据设计要求进行布局,JAVA提供了多种布局管理器,例如流式布局、边界布局等。通过选择合适的布局管理器,可以灵活地对组件进行排列,使得界面布局美观而高效。 4. 可扩展性:JAVA GUI编程具有很高的可扩展性,通过使用其他JAVA库和框架,可以实现更加丰富、交互性更强的图形界面。例如,可以结合Swing库开发出更加美观的界面,或者使用JavaFX框架开发出更加多媒体化、动态的界面。 总之,JAVA GUI编程是一种基于图形界面的编程方式,通过使用JAVA提供的组件、事件驱动和布局管理等特性,可以实现丰富、交互性强的用户界面。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值