【Java_GUI编程】--基本操作你要知道(二)

简介: 【Java_GUI编程】--基本操作你要知道(二)

输入框事件监听

package www.qyl.lesson01;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class TestActionEvent {
    public static void main(String[] args) {
        JFrame jFrame = new JFrame();
        jFrame.setBounds(10,10,300,300);
        jFrame.setVisible(true);
        JTextField jTextField = new JTextField("test:");
        jFrame.getContentPane().add(jTextField);
        jTextField.addActionListener(new MyActionEvent());
    }
}
class MyActionEvent implements ActionListener{
    @Override
    public void actionPerformed(ActionEvent e) {
        JTextField jTextField = (JTextField)e.getSource(); //获得一些资源、返回一个对象
        System.out.println(jTextField.getText());   //获得输入框中的内容
        jTextField.setText("");     //设置输入框为 null
    }
}

文本框输入文字回车后提交到后台

键盘监听

package www.qyl.lesson01;
import javax.swing.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
public class TestKeyListener {
    public static void main(String[] args) {
        new KeyFrame();
    }
}
class KeyFrame extends JFrame{
    public KeyFrame(){
        setBounds(10,10,300,300);
        setVisible(true);
        this.addKeyListener(new KeyListener() {
            @Override
            public void keyTyped(KeyEvent e) {
            }
            @Override
            public void keyPressed(KeyEvent e) {
                int keycode = e.getKeyCode();  //获得键盘按下的哪一个键
                System.out.println(keycode);  //打印目前按下的键(会输出一个静态属性值)
                if (keycode == KeyEvent.VK_SPACE){   //键盘上每个健对应一个静态属性值:VK_XX
                    System.out.println("你按下了空格");
                }
            }
            @Override
            public void keyReleased(KeyEvent e) {
            }
        });
    }
}

5、JDialog弹窗

package www.qyl.lesson01;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class TestDialog {
    public static void main(String[] args) {
        JFrame jFrame = new JFrame();
        jFrame.setVisible(true);
        jFrame.setBounds(10,10,300,300);
        JButton button = new JButton("button1");
        jFrame.getContentPane().add(button);
        button.addActionListener(new MyAction1());
    }
}
class MyAction1 implements ActionListener{
    @Override
    public void actionPerformed(ActionEvent e) {
        new MyDialogDemo();
    }
}
class MyDialogDemo {
    public MyDialogDemo(){
        JDialog jDialog = new JDialog();
        jDialog.setVisible(true);
        jDialog.setBounds(100,100,300,300);
    }
}

点击按钮弹出JDialog窗口

6、Icon、ImageIcon标签

Icon

package www.qyl.lesson02;
import javax.swing.*;
import java.awt.*;
public class IconDemo extends JFrame implements Icon {
    private int width,height;
    public IconDemo(){
    }
    public IconDemo(int width,int height){
        this.width = width;
        this.height = height;
    }
    public void init(){
        IconDemo iconDemo = new IconDemo(15,15);
        JLabel label = new JLabel("icontest",iconDemo,SwingConstants.CENTER);
        Container container = getContentPane();
        container.add(label);
        this.setBounds(50,50,100,100);
        this.setVisible(true);
        this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    }
    public static void main(String[] args) {
        new IconDemo().init();
    }
    @Override
    public void paintIcon(Component c, Graphics g, int x, int y) {
        g.fillOval(x,y,width,height);   //g:是画笔,g.fillOval画出一个图形
    }
    @Override
    public int getIconWidth() {
        return this.width;
    }
    @Override
    public int getIconHeight() {
        return this.height;
    }
}

ImageIcon

图片也可以放在按钮上,称为图片按钮

package www.qyl.lesson02;
import com.sun.jndi.toolkit.url.UrlUtil;
import javax.swing.*;
import java.awt.*;
import java.net.URL;
public class ImageIconDemo extends JFrame {
    public ImageIconDemo(){
        JLabel label = new JLabel("ImageIcon");
        URL url = ImageIconDemo.class.getResource("hhy.png");  //获取本类路径下的图片路径,获取图片路径
        ImageIcon imageIcon = new ImageIcon(url);
        label.setIcon(imageIcon);
        Container container = getContentPane();
        container.add(label);
        setVisible(true);
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        setBounds(20,20,300,300);
    }
    public static void main(String[] args) {
        new ImageIconDemo();
    }
}

7、按钮

单选按钮

package www.qyl.lesson02;
import javax.swing.*;
public class TestradioBttton {
    public static void main(String[] args) {
        JFrame jf = new JFrame();
        jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        jf.setBounds(10,10,300,300);
        jf.setVisible(true);
        JPanel jPanel = new JPanel();
jRadioButtonJiZhuPass.isSelected()
        JRadioButton jradio1 = new JRadioButton("男");
        JRadioButton jradio2 = new JRadioButton("女");
        //单选只能选择一个所以需要分组,一个组中只能选择一个
        ButtonGroup group = new ButtonGroup();
        group.add(jradio1);
        group.add(jradio2);
        //判断是否选中单选框
         System.out.println(jradio1.isSelected());  //返回Boolean类型
        jPanel.add(jradio1);
        jPanel.add(jradio2);
        jf.add(jPanel);
    }
}

目录
相关文章
|
15天前
|
Java
如何在Java中进行多线程编程
Java多线程编程常用方式包括:继承Thread类、实现Runnable接口、Callable接口(可返回结果)及使用线程池。推荐线程池以提升性能,避免频繁创建线程。结合同步与通信机制,可有效管理并发任务。
100 6
|
10天前
|
IDE Java 编译器
java编程最基础学习
Java入门需掌握:环境搭建、基础语法、面向对象、数组集合与异常处理。通过实践编写简单程序,逐步深入学习,打牢编程基础。
111 0
|
1月前
|
SQL Java 数据库
2025 年 Java 从零基础小白到编程高手的详细学习路线攻略
2025年Java学习路线涵盖基础语法、面向对象、数据库、JavaWeb、Spring全家桶、分布式、云原生与高并发技术,结合实战项目与源码分析,助力零基础学员系统掌握Java开发技能,从入门到精通,全面提升竞争力,顺利进阶编程高手。
326 0
|
3月前
|
Java API 微服务
为什么虚拟线程将改变Java并发编程?
为什么虚拟线程将改变Java并发编程?
277 83
|
15天前
|
安全 前端开发 Java
从反射到方法句柄:深入探索Java动态编程的终极解决方案
从反射到方法句柄,Java 动态编程不断演进。方法句柄以强类型、低开销、易优化的特性,解决反射性能差、类型弱、安全性低等问题,结合 `invokedynamic` 成为支撑 Lambda 与动态语言的终极方案。
115 0
|
2月前
|
安全 Java 数据库连接
2025 年最新 Java 学习路线图含实操指南助你高效入门 Java 编程掌握核心技能
2025年最新Java学习路线图,涵盖基础环境搭建、核心特性(如密封类、虚拟线程)、模块化开发、响应式编程、主流框架(Spring Boot 3、Spring Security 6)、数据库操作(JPA + Hibernate 6)及微服务实战,助你掌握企业级开发技能。
389 3
|
1月前
|
Java 开发者
Java并发编程:CountDownLatch实战解析
Java并发编程:CountDownLatch实战解析
365 100
|
1月前
|
算法 Java
Java多线程编程:实现线程间数据共享机制
以上就是Java中几种主要处理多线程序列化资源以及协调各自独立运行但需相互配合以完成任务threads 的技术手段与策略。正确应用上述技术将大大增强你程序稳定性与效率同时也降低bug出现率因此深刻理解每项技术背后理论至关重要.
134 16
|
1月前
|
NoSQL Java 关系型数据库
超全 Java 学习路线,帮你系统掌握编程的超详细 Java 学习路线
本文为超全Java学习路线,涵盖基础语法、面向对象编程、数据结构与算法、多线程、JVM原理、主流框架(如Spring Boot)、数据库(MySQL、Redis)及项目实战等内容,助力从零基础到企业级开发高手的进阶之路。
180 1