首页 > 编程语言 >【Java - 图形界面设计】窗体 && 组件 && 事件

【Java - 图形界面设计】窗体 && 组件 && 事件

时间:2023-11-27 19:34:30浏览次数:29  
标签:Java 图形界面 public 窗体 && 组件 new btn frame

窗体

窗体对象JFrame
package com.EveX.frame;

import javax.swing.*;

public class FrameTest {

    public static void main(String[] args) {
        /*创建窗体*/
        JFrame frame = new JFrame();

        /*设置窗体大小,参数宽和高,单位:像素*/
        frame.setSize(500, 500);

        /*设置窗体标题*/
        frame.setTitle("我是左上角的标题");

        /*设置窗口关闭模式:关闭窗口时终止程序*/
        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

        /*设置窗体可见,一定要放在最后!*/
        frame.setVisible(true);
    }

}

组件

  • 放在窗体面板中的内容(按钮、图片等)为组件

  • 添加组件步骤:

  • 注意:如果多个组件放在同一个位置,类似进栈操作,先进先出

按钮:JButton

文字、图片:JLable

组件代码
package com.EveX.frame;

import javax.swing.*;

public class FrameTest {

    public static void main(String[] args) {
        /*创建窗体*/
        JFrame frame = new JFrame();

        /*设置窗体大小,参数宽和高,单位:像素*/
        frame.setSize(500, 500);

        /*设置窗体标题*/
        frame.setTitle("我是标题");

        /*设置窗口关闭模式:关闭窗口时终止程序*/
        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

        /*取消组件默认布局*/
        frame.setLayout(null);

        /* JButton组件 */
        // 创建按钮组件
        JButton btn = new JButton("按钮");
        // 设置按钮位置
        btn.setBounds(50, 50, 100, 100);
        // 添加组件至窗体面板
        frame.getContentPane().add(btn);

        /* JLable组件 */
        // 创建文本
        JLabel txt = new JLabel("文本");
        txt.setBounds(50, 150, 100, 100);
        frame.getContentPane().add(txt);

        // 创建图片
        JLabel pic7 = new JLabel(new ImageIcon("/Users/evex/Projects/IDEA/image/2.png"));
        pic7.setBounds(50, 300, 100, 100);
        frame.getContentPane().add(pic7);

        /*设置窗体可见,一定要放在最后!*/
        frame.setVisible(true);
    }

}

事件


事件监听


事件冲突


btn.setFocusable(false);

事件监听代码
package com.EveX.listener;

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

public class ListenerTest {
    public static void main(String[] args) {
        JFrame frame = new JFrame();
        frame.setSize(500, 500);
        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        frame.setLayout(null);

        JButton btn = new JButton("按钮");
        btn.setBounds(0, 0, 100, 100);
        frame.getContentPane().add(btn);
        
        // 取消按钮组件的焦点
        btn.setFocusable(false);
        
        /* 添加鼠标和空格监听 */
        btn.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                System.out.println("鼠标点击...");
            }
        });
        // btn.addActionListener(e -> System.out.println("鼠标点击..."));
        
        
        /* 添加键盘案件 */
        frame.addKeyListener(new KeyListener() {
            @Override
            public void keyTyped(KeyEvent e) {

            }

            @Override
            public void keyPressed(KeyEvent e) {
                int keyCode = e.getKeyCode();
                if(keyCode == 37) {
                    System.out.println("方向左键");
                } else if(keyCode == 38) {
                    System.out.println("方向上键");
                } else if(keyCode == 39) {
                    System.out.println("方向右键");
                } else if(keyCode == 40) {
                    System.out.println("方向下键");
                }
                System.out.println(keyCode);
            }

            @Override
            public void keyReleased(KeyEvent e) {

            }
        });

        frame.setVisible(true);
    }
}

标签:Java,图形界面,public,窗体,&&,组件,new,btn,frame
From: https://www.cnblogs.com/Eve7Xu/p/17859453.html

相关文章

  • 【开源】基于JavaWeb的网上药店系统
    一、摘要1.1项目介绍基于JAVA+Vue+SpringBoot+MySQL的网上药店系统,包含了药品类型模块、药品档案模块、药品收藏模块、药品订单模块、药品资讯模块,还包含系统自带的用户管理、部门管理、角色管理、菜单管理、日志管理、数据字典管理、文件管理、图表展示等基础模块,网上药店系统基......
  • 【开源】基于JavaWeb的活动推荐系统
    一、摘要1.1项目介绍基于JAVA+Vue+SpringBoot+MySQL的用户画像活动推荐系统,使用了协同推荐算法,包含了标签管理、活动档案、活动收藏、活动报名、活动留言模块,还包含系统自带的用户管理、部门管理、角色管理、菜单管理、日志管理、数据字典管理、文件管理、图表展示等基础模块,用户......
  • Caused by: io.debezium.DebeziumException: java.sql.SQLSyntaxErrorException: Acce
    1.情景展示如上图所示:在使用debezium读取mysql数据操作日志时(io.debezium.connector.mysql.MySqlConnector),报错:Causedby:io.debezium.DebeziumException:java.sql.SQLSyntaxErrorException:Accessdenied;youneed(atleastoneof)theRELOADprivilege(s)forthis......
  • JAVAWEB之文件的上传下载
    文件上传:本篇文章使用的文件上传的例子使用的都是原生技术,servelt+jdbc+fileupload插件,这也是笔者的习惯,当接触到某些从未接触过的东西时,总是喜欢用最原始的东西将他们表达出来。下面是具体的步骤,大家可以跟着我一步一步的用apache的fileupload插件来完成文件的上传下载。1.创......
  • Java面试小练(三)
    聊一聊HashMap底层的数据结构及扩容机制?数据结构HashMap是一个双链集合,集合中的每个元素是以键值对的形式存在,HashMap的特点是无序,不重复,无索引HashMap底层数据结构在JDK1.7之前是数组+链表,而在JDK1.8之后是数组+链表+红黑树HashMap主要依赖于哈希表(数组)来存储,数组中的......
  • JAVA替换replaceAll方法报错:Illegal group reference
     Exceptioninthread"main"java.lang.IllegalArgumentException:Illegalgroupreference atjava.util.regex.Matcher.appendReplacement(Matcher.java:857) atjava.util.regex.Matcher.replaceAll(Matcher.java:955) atjava.lang.String.replaceAll(String......
  • 秦疆的Java课程笔记:41 流程控制 打印九九乘法表
    打印九九乘法表:1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 1*4=4 2*4=8 3*4=12 4*4=16 1*5=5 2*5=10 3*5=15 4*5=20 5*5=25 1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36 1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49 1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*......
  • Discuz3.5版本整合Java 登录
    1.下载Discuz下载:官网Discuz-api-for-java下载:蓝奏云2.配置1.登录ucenter后台,应用管理,新建一个应用。以上配置uCenter如果能访问到http://172.16.22.103:13000/api/uc.php,就会显示通信成功2.修改Java配置运行testLogin()方法,如果不出意外会得到一个js代码,例:<scripttype="text/......
  • 关于Java内存模型
    (面试被问到,想到之前有个笔记,整理一下发出来。)内存模型可以理解为在特定的操作协议下,对特定的内存或高速缓存进行读写访问的过程抽象。不同架构的物理机器可以拥有不一样的内存模型,而Java虚拟机也有自己的内存模型。Java内存模型(JavaMemoryModel,JMM)是来屏蔽各种硬件和操作系统......
  • Typescript和Javascript的区别是什么?一文带您了解Typescript排名飙升的原因!
    看见了github上2023年编程语言的排行榜,Java竟然被typescript挤出了前三!Javascript的登顶得益于node.js 的出现,使js实现了在前后端的技术栈统一。那typescript为何又能在三足鼎立中占据一席之地呢?本文就对typescript进行一下概要介绍,本文并未涉及typescript的具体语法,注重分析Javas......