0
点赞
收藏
分享

微信扫一扫

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


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 核心技术 卷1》 笔记 第九章 Swing 用户界面组件(5)_复选框_02

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

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

9.4.2 单选按钮

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

  1. 构建 ButtonGroup 对象
  2. 构建 JRadioButton 对象
  3. 把 JRadioButton 添加到按钮组
  4. 不同按钮按下时,进行事件监听

例子:

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)_java_05

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

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

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

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

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

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

举报

相关推荐

0 条评论