Java语言程序设计——篇十五(2)


🌿🌿🌿跟随博主脚步,从这里开始→博主主页🌿🌿🌿

  • 欢迎大家:这里是我的学习笔记、总结知识的地方,喜欢的话请三连,有问题可以私信🌳🌳🌳
    您的点赞👍、关注➕、收藏⭐️、评论📝、私信📧是我最大的支持与鼓舞!!!🌻🌻🌻

常用控件(1)

常用控件

  • JavaFX提供大量的控件,控件类在javafx.scene.control包中,如Label、Button、TextField、PasswordField、TextArea、CheckBox、RadioButton、Slider等

Label类

  • Label表示一个标签,一个不可编辑显示区域。Label既可以显示文本,也可以显示图片。
  • 构造方法:
java 复制代码
 Label(String text)
 Label(String text, Node graphic)
  • 常用方法:
java 复制代码
 void setGraphic(Node value)
 void setAlignment(Pos value)
 void setTextFill(Paint value)
 void setContentDisplay(ContentDisplay value)

Button类

  • 按钮是JavaFX中最常用的控件,它可以响应用户点击事件。Button类可以显示文本、图像或者文本加图像。
  • 构造方法:
java 复制代码
 Button(String text)
 Button(String text, Node graphic)
  • 常用方法:
java 复制代码
 void setText(String text)
 void setGraphic(Node graphic)
 void setOnAction(EventHandler<ActionEvent> value)

TextField类和PasswordField类

  • TextField类表示单行文本框,通常用来接收用户输入的文本。PasswordField类表示密码框,用来接收用户输入密码。
  • 构造方法:
java 复制代码
 TextField()
 TextField (String text)
  • TextField类定义了text、editable、alignment等属性及属性设置方法:
java 复制代码
 void setText(String value)
 void setEditable(boolean value)
 void setAlignment(Pos value)
 void setPrefColumnCount(int value)
 void setPromptText(String value)
 void setOnAction(EventHandler<ActionEvent> v)
  • PasswordField是TextField类的子类,它用于创建密码框,密码框中输入的文本不回显,字符通常显示一个黑点。
  • 下面代码创建一个密码框:
java 复制代码
     PasswordField password = new PasswordField();
     password.setPromptText("请输入口令");

实战演练

问题描述:

下面程序使用文本框和密码框创建一个简单登录界面,并且为按钮设置了动作事件处理器,可以判断用户是否合法。

java 复制代码
import javax.swing.*;  
import java.awt.*;  
import java.awt.event.ActionEvent;  
import java.awt.event.ActionListener;  
  
public class LoginDemo extends JFrame {  
    private JTextField userTextField;  
    private JPasswordField passwordField;  
    private JButton loginButton;  
    private JLabel messageLabel;  
  
    public LoginDemo() {  
        // 设置窗口标题  
        setTitle("登录界面");  
        // 设置窗口关闭行为  
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
        // 设置布局管理器  
        setLayout(new FlowLayout());  
  
        // 初始化组件  
        userTextField = new JTextField(20);  
        add(userTextField);  
  
        passwordField = new JPasswordField(20);  
        add(passwordField);  
  
        loginButton = new JButton("登录");  
        add(loginButton);  
  
        messageLabel = new JLabel("");  
        add(messageLabel);  
  
        // 为登录按钮添加事件监听器  
        loginButton.addActionListener(new ActionListener() {  
            @Override  
            public void actionPerformed(ActionEvent e) {  
                // 获取用户名和密码  
                String username = userTextField.getText();  
                String password = new String(passwordField.getPassword());  
  
                // 简单的验证逻辑  
                if ("admin".equals(username) && "123456".equals(password)) {  
                    messageLabel.setText("登录成功!");  
                } else {  
                    messageLabel.setText("用户名或密码错误!");  
                }  
            }  
        });  
  
        // 调整窗口大小  
        pack();  
        // 设置窗口可见  
        setVisible(true);  
    }  
  
    public static void main(String[] args) {  
        // 在事件调度线程中运行创建UI的代码,以确保线程安全  
        SwingUtilities.invokeLater(new Runnable() {  
            @Override  
            public void run() {  
                new LoginDemo();  
            }  
        });  
    }  
}

TextArea类

  • TextArea类实现多行文本框,它允许用户输入多行文本。
  • 构造方法:
java 复制代码
 TextArea()
 TextArea(String text)
  • 常用方法:
java 复制代码
 void setText(String value)
 void setEditable(boolean value)
 void setAlignment(Pos value) 
 void setPrefColumnCount(int value) 
 void setPrefRowCount(int value)
  • TextArea提供滚动支持,但通常将TextArea对象放置到一个ScrollPane对象上,让ScrollPane处理TextArea的滚动会更加方便,如下代码所示:
java 复制代码
    TextArea taNode = new TextArea("多行文本区");
    ScrollPane  scrollPane = new ScrollPane(taNode);
    rootNode.setCenter(scrollPane);

实战演练

问题描述:

下面程序在一个标签上显示一个图像,在一个文本区域中显示一段长文本。

java 复制代码
import javax.swing.*;  
import java.awt.*;  
  
public class ImageAndTextDemo extends JFrame {  
    private JLabel imageLabel;  
    private JTextArea textArea;  
  
    public ImageAndTextDemo() {  
        // 设置窗口标题  
        setTitle("图像和文本演示");  
        // 设置窗口关闭行为  
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
        // 设置布局管理器  
        setLayout(new FlowLayout());  
  
        // 初始化图像标签  
        ImageIcon imageIcon = new ImageIcon("path/to/your/image.png"); // 替换为你的图像路径  
        imageLabel = new JLabel(imageIcon);  
        add(imageLabel);  
  
        // 初始化文本区域  
        textArea = new JTextArea(20, 50); // 20行50列  
        textArea.setText("这里是一段非常长的文本,可以在文本区域中滚动查看更多内容...");  
        textArea.setLineWrap(true); // 设置自动换行  
        textArea.setWrapStyleWord(true); // 设置断行不断字  
        JScrollPane scrollPane = new JScrollPane(textArea); // 为文本区域添加滚动条  
        add(scrollPane);  
  
        // 调整窗口大小  
        pack();  
        // 设置窗口可见  
        setVisible(true);  
    }  
  
    public static void main(String[] args) {  
        // 在事件调度线程中运行创建UI的代码,以确保线程安全  
        SwingUtilities.invokeLater(new Runnable() {  
            @Override  
            public void run() {  
                new ImageAndTextDemo();  
            }  
        });  
    }  
}

CheckBox类

  • CheckBox 类称为复选框或检查框。创建复选框需使用CheckBox类的构造方法。创建复选框的同时可以为其指明文本说明标签,这个文本标签用来说明复选框的意义和作用。
  • 例:
java 复制代码
     CheckBox cb1 = new CheckBox();            
     CheckBox cb2 = new CheckBox("文学");  
     cb1.setText("体育");            
     cb1.setSelected(true); //当一个复选框被单击(选中或者取消选中),会触发一个ActionEvent事件。要判断一个复选框是否被选中,使用isSelected()方法。

博主用心写,读者点关注,互动传真情,知识不迷路。

相关推荐
一个不秃头的 程序员4 分钟前
代码加入SFTP JAVA ---(小白篇3)
java·python·github
丁总学Java16 分钟前
--spring.profiles.active=prod
java·spring
上等猿23 分钟前
集合stream
java
java1234_小锋27 分钟前
MyBatis如何处理延迟加载?
java·开发语言
菠萝咕噜肉i28 分钟前
MyBatis是什么?为什么有全自动ORM框架还是MyBatis比较受欢迎?
java·mybatis·框架·半自动
喜欢猪猪35 分钟前
Java技术专家视角解读:SQL优化与批处理在大数据处理中的应用及原理
android·python·adb
林的快手42 分钟前
209.长度最小的子数组
java·数据结构·数据库·python·算法·leetcode
FeboReigns1 小时前
C++简明教程(10)(初识类)
c语言·开发语言·c++
学前端的小朱1 小时前
处理字体图标、js、html及其他资源
开发语言·javascript·webpack·html·打包工具
向阳12181 小时前
mybatis 缓存
java·缓存·mybatis