当前位置 : 主页 > 编程语言 > java >

《Java 核心技术 卷1》 笔记 第九章 Swing 用户界面组件(5)

来源:互联网 收集:自由互联 发布时间:2022-07-13
9.4 选择组件 有时候需要用户对结果进行选择,比如服务评价。 常用的选择方式有: 复选框 单选按钮 选项列表 滑块 9.4.1 复选框 有时只有一个选项,选择或不选择,比如用户协议。这


9.4 选择组件

有时候需要用户对结果进行选择,比如服务评价。

常用的选择方式有:

  • 复选框
  • 单选按钮
  • 选项列表
  • 滑块

9.4.1 复选框

有时只有一个选项,选择或不选择,比如用户协议。这时用到复选框。

创建:JCheckBox bold = new JCheckBox("Bold");

选定:bold.setSelected(true);

动作监听同按钮,使用 AcitonListener

书上例子:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Main {
public static void main(String[] args) {
Main solution = new Main();

EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
CheckBoxFrame frame = new CheckBoxFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
});
}
}

class CheckBoxFrame extends JFrame{
private JLabel label;
private JCheckBox bold;
private JCheckBox italic;

private static final int FONTSIZE = 12;
public CheckBoxFrame(){
setTitle("CheckBoxTest");
setSize(300,200);

label = new JLabel("The quick brown fox jumps over the lazy dog.");
label.setFont(new Font("Serif", Font.PLAIN, FONTSIZE));
add(label,BorderLayout.CENTER);

ActionListener listener = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
int mode = 0;
if(bold.isSelected())
mode+=Font.BOLD;
if(italic.isSelected())
mode+=Font.ITALIC;
label.setFont(new Font("Serif",mode,FONTSIZE));
}
};

JPanel buttonPanel = new JPanel();

bold = new JCheckBox("Bold");
bold.addActionListener(listener);
buttonPanel.add(bold);

italic = new JCheckBox("Italic");
italic.addActionListener(listener);
buttonPanel.add(italic);

add(buttonPanel, BorderLayout.SOUTH);

}
}

《Java 核心技术 卷1》 笔记 第九章 Swing 用户界面组件(5)_java

《Java 核心技术 卷1》 笔记 第九章 Swing 用户界面组件(5)_后端_02

《Java 核心技术 卷1》 笔记 第九章 Swing 用户界面组件(5)_复选框_03

《Java 核心技术 卷1》 笔记 第九章 Swing 用户界面组件(5)_复选框_04

9.4.2 单选按钮

有时候多个选项只能选一个,比如字体大小大中小这样的互斥选项,用户一次只能选择一个。

  • 构建 ButtonGroup 对象
  • 构建 JRadioButton 对象
  • 把 JRadioButton 添加到按钮组
  • 不同按钮按下时,进行事件监听
  • 例子:

    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;

    public class Main {
    public static void main(String[] args) {
    Main solution = new Main();

    EventQueue.invokeLater(new Runnable() {
    @Override
    public void run() {
    RadilButtonFrame frame = new RadilButtonFrame();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true);
    }
    });
    }
    }

    class RadilButtonFrame extends JFrame{
    private JPanel buttonPanel;
    private ButtonGroup group;
    private JLabel label;

    private static final int SIZE = 12;
    public RadilButtonFrame(){
    setTitle("RadioButtonTest");
    setSize(300,200);

    label = new JLabel("The quick brown fox jumps over the lazy dog.");
    label.setFont(new Font("Serif", Font.PLAIN, SIZE));
    add(label,BorderLayout.CENTER);


    buttonPanel = new JPanel();
    group = new ButtonGroup();

    addRadioButton("Small", 8);
    addRadioButton("Medium", 12);
    addRadioButton("Large", 18);
    addRadioButton("Extra large", 36);

    add(buttonPanel, BorderLayout.SOUTH);

    }

    private void addRadioButton(String name, final int size){
    boolean selected = size == SIZE;
    JRadioButton button = new JRadioButton(name,selected);
    group.add(button);
    buttonPanel.add(button);

    ActionListener listener = new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
    label.setFont(new Font("Serif",Font.PLAIN, size));
    }
    };

    button.addActionListener(listener);
    }

    }

    《Java 核心技术 卷1》 笔记 第九章 Swing 用户界面组件(5)_开发语言_05

    《Java 核心技术 卷1》 笔记 第九章 Swing 用户界面组件(5)_开发语言_06

    《Java 核心技术 卷1》 笔记 第九章 Swing 用户界面组件(5)_开发语言_07

     相关内容:选择 《Java核心技术 卷1》查找相关笔记

     喜欢的话,点个赞吧~!平时做题,以及笔记内容将更新到公众号。

    关注公众号,互相学习:钰娘娘知识汇总

    《Java 核心技术 卷1》 笔记 第九章 Swing 用户界面组件(5)_ide_08

    网友评论