java作业

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

  1. 在窗口的NORTH区放置一个JPanel面板。
  2. JPanel面板放置如下组件:
    (1) JLable标签,标签文本为“兴趣”,右边接着是三个JCheckBox多选按钮,选项分别是“羽毛球”、“乒乓球”、“唱歌”。可以多选。
    (2) JLabel标签,标签文本为“性别”,右边接着是两个JRadioButton按钮,选项分别是“男”、“女”。置成单选按钮,提示:使用ButtonGroup类 。
    (3) 兴趣标签及按钮放在第一行,性别标签 及按钮放在第二行,分别借助两个行型Box容器安排这两行组件的位置,而两个行型Box容器放入JPanel面板中,要两行组件对齐的话,可以把JPanel面板设置两行一列的GridLayout布局。
  3. 窗口的CENTER区域放置一个JScrollPane容器,容器中放置一个JTextArea文本域。
  4. 当点击JCheckBox多选按钮和JRadioButton按钮时,如果是选中操作,则把选中项的文本显示在JTextArea文本域,每行显示一个选项。可以重复点击,每次点击都显示选中项。
 TestMain类
package cn.ganggang;
public class TestMain {
    public static void main(String[] args) {
        new MyFrame("窗口");
    }
}
MyWindows类
package cn.ganggang;
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BoxLayout;
import javax.swing.ButtonGroup;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
/**
 * 继承JFrame类
 *
 * @author Dustray 2017年11月17日
 */
public class MyFrame extends JFrame {
    private JCheckBox jCheckBox1, jCheckBox2, jCheckBox3;
    private JRadioButton jRadioButton1, jRadioButton2;
    private JTextArea ta;
    public MyFrame(String title) {
        // 初始化组件
        init();
        // 设置内部容器和组件
        setJPanel();
        // 设置窗口位置大小
        setBounds(450, 150, 500, 500);
        // 设置窗口标题
        setTitle(title);
        // 设置可见
        setVisible(true);
        // 设置窗口按钮
        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    }
    public void setJPanel() {
        // 设置最外层面板为纵向BoxLayout
        Container containerMain = getContentPane();
        containerMain.setLayout(new BoxLayout(containerMain, BoxLayout.Y_AXIS));
        // 设置两个面板为横向BoxLayout
        JPanel containerBox1 = new JPanel();
        JPanel containerBox2 = new JPanel();
        containerBox1.setLayout(new BoxLayout(containerBox1, BoxLayout.X_AXIS));
        containerBox2.setLayout(new BoxLayout(containerBox2, BoxLayout.X_AXIS));
        // 设置两个面板为GridLayout:单行四列
        JPanel containerLikeGrid = new JPanel();
        JPanel containerSexGrid = new JPanel();
        containerLikeGrid.setLayout(new GridLayout(1, 4));
        containerSexGrid.setLayout(new GridLayout(1, 4));
        // 设置第一个GridLayout内容,从左至右分别为:“兴趣”、“羽毛球”、“乒乓球”、“唱歌”。
        containerLikeGrid.add(new JLabel("兴趣"));
        containerLikeGrid.add(jCheckBox1);
        containerLikeGrid.add(jCheckBox2);
        containerLikeGrid.add(jCheckBox3);
        // 设置两个JRadioButton在同一ButtonGroup中
        ButtonGroup group = new ButtonGroup();
        group.add(jRadioButton1);
        group.add(jRadioButton2);
        // 设置第二个GridLayout内容,从左至右分别为:“性别”、“男”、“女”。
        containerSexGrid.add(new JLabel("性别"));
        containerSexGrid.add(jRadioButton1);
        containerSexGrid.add(jRadioButton2);
        // 将两个GridLayout分别放入两个BoxLayout
        containerBox1.add(containerLikeGrid);
        containerBox2.add(containerSexGrid);
        // 将两个横向BoxLayout放入纵向主BoxLayout
        containerMain.add(containerBox1);
        containerMain.add(containerBox2);
        // 创建JScrollPane()面板对象,并将文本域对象添加到面板中
        JScrollPane jScrollPane = new JScrollPane(ta);
        // 将JScrollPane放入纵向主BoxLayout
        containerMain.add(jScrollPane);
    }
    /**
     * 组件初始化,设置监听事件
     */
    private void init() {
        jCheckBox1 = new JCheckBox("羽毛球");
        jCheckBox2 = new JCheckBox("乒乓球");
        jCheckBox3 = new JCheckBox("唱歌");
        // 为三个JCheckBox添加监听
        jCheckBox1.addActionListener(new CheckBoxListener());
        jCheckBox2.addActionListener(new CheckBoxListener());
        jCheckBox3.addActionListener(new CheckBoxListener());
        jRadioButton1 = new JRadioButton("男");
        jRadioButton2 = new JRadioButton("女");
        // 为三个JRadioButton添加监听
        jRadioButton1.addActionListener(new CheckBoxListener());
        jRadioButton2.addActionListener(new CheckBoxListener());
        // 创建文本区域组件
        ta = new JTextArea(20, 50);
    }
    /**
     * 监听内部类,实现ActionListener
     *
     * @author Dustray 2017年11月17日
     */
    class CheckBoxListener implements ActionListener {
        @Override
        public void actionPerformed(ActionEvent e) {
            // 清空文本框
            ta.setText("");
            // 审查单/复选框状态
            checkButton();
        }
        public void checkButton() {
            if (jCheckBox1.isSelected()) {
                ta.setText(ta.getText() + jCheckBox1.getText() + "\n");
            }
            if (jCheckBox2.isSelected()) {
                ta.setText(ta.getText() + jCheckBox2.getText() + "\n");
            }
            if (jCheckBox3.isSelected()) {
                ta.setText(ta.getText() + jCheckBox3.getText() + "\n");
            }
            if (jRadioButton1.isSelected()) {
                ta.setText(ta.getText() + jRadioButton1.getText() + "\n");
            }
            if (jRadioButton2.isSelected()) {
                ta.setText(ta.getText() + jRadioButton2.getText() + "\n");
            }
        }
    }
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值