编写一个 JFrame 窗口,窗口中的 NORTH 区域中放置一个 JPanel 面板, JPanel 面板中从左到右依次放置如下组件: JLabel 标签,三个 JCheckBox 多选按钮。

本文介绍了一个使用Java Swing创建的兴趣调查表单应用。该应用包含一个JFrame窗口,窗口顶部设有用于选择兴趣和性别的面板,中部则显示用户的选择结果。通过JCheckBox和JRadioButton收集用户兴趣与性别信息,并实时更新JTextArea显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

编写一个 JFrame 窗口,要求如下:

  1. 窗口中的 NORTH 区域中放置一个 JPanel 面板
  2. JPanel 面板中从左到右依次放置如下组件: JLabel 标签,标签的文本为“兴趣” 三个 JCheckBox 多选按钮,文本分别为“羽毛球”、“乒乓球”、“唱歌” JLabel 标签,标签的文本为“性别” 两个 JRadioButton 按钮,文本分别为“男”、“女”
  3. 窗口的 CENTER 区域放置一个 JScrollPane 容器,容器中放置一个 JTextArea 文本域
  4. 当点击多选按钮和单选按钮时,会把选中按钮的文本显示在 JTextArea 文本域中。
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;

public class Information extends JFrame { // 窗口NORTH部的JPanel面板 

    private JPanel panel = new JPanel();
    private JLabel lb1 = new JLabel("爱好"); // 爱好标签 
    private JCheckBox cb1 = new JCheckBox("羽毛球"); // 三个表示爱好的JCheckBox复选框 
    private JCheckBox cb2 = new JCheckBox("乒乓球");
    private JCheckBox cb3 = new JCheckBox("唱歌"); 
    private JLabel lb2 = new JLabel("性别"); // 性别标签
    private JRadioButton rb1 = new JRadioButton("男"); // 表示性别的JRadioButton单选框
    private JRadioButton rb2 = new JRadioButton("女"); 
    private ButtonGroup bg = new ButtonGroup(); // ButtonGroup添加JRadioButton,实现单选功能
    private JTextArea area = new JTextArea(); // 文本域组件 
    private JScrollPane pane = new JScrollPane(area); // 窗口CENTER部的JScrollPane面板,其中放置area文本域 
    private Set<String> hobbies = new HashSet<String>(); // Set集合存放选中的兴趣 
    private String gender = ""; // gender选中的性别
    private ActionListener listener1 = new ActionListener() { // JCheckBox复选框的事件监听器 
    public void actionPerformed(ActionEvent e) {
             JCheckBox cb = (JCheckBox) e.getSource();

             if (cb.isSelected()) { // 选中的复选框把文本添加到Set集合中 
                 hobbies.add(cb.getText());
             } else {
                 hobbies.remove(cb.getText()); // 反之从集合中移除 
             }
              
             print();
             }
        };

    private ActionListener listener2 = new ActionListener() { // JRadioButton单选框的事件监听器 
            public void actionPerformed(ActionEvent e) {
                JRadioButton jb = (JRadioButton) e.getSource();
                gender = jb.getText();
                print();
            }
        };

    public Information() { // 打印方法 
    	//添加标签、单选和复选按钮 
        panel.add(lb1);
        panel.add(cb1);
        panel.add(cb2);
        panel.add(cb3);
        panel.add(lb2);
        panel.add(rb1);
        panel.add(rb2);
        bg.add(rb1);
        bg.add(rb2);
        cb1.addActionListener(listener1); // 为单选和复选按钮添加事件监听器 
        cb2.addActionListener(listener1);
        cb3.addActionListener(listener1);
        rb1.addActionListener(listener2);
        rb2.addActionListener(listener2);

        // 将JPanel面板和JScrollPane面板添加到JFrame容器中 
        Container container = this.getContentPane();
        container.add(panel, BorderLayout.NORTH);
        container.add(pane, BorderLayout.CENTER);
        this.pack();
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setVisible(true);
    }

    private void print() {
        area.setText(""); // 清空文本域 

        if (hobbies.size() > 0) { // 如果Set集合中有元素,打印兴趣 
            area.append("你的兴趣爱好有: ");
        }

        Iterator<String> it = hobbies.iterator();

        while (it.hasNext()) {
            area.append(it.next() + " ");
        }

        if (!"".equals(gender)) { // 如果gender不为空字符串,打印性别 
            area.append("你的性别为: " + gender);
        }
    }

    public static void main(String[] args) {
        new Information();
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

烟敛寒林o

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值