GUI—布局、监听器

来源:互联网 发布:沙盘软件多开器 编辑:程序博客网 时间:2024/05/17 17:54

作业:

编写一个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文本域,每行显示一个选项。可以重复点击,每次点击都显示选中           项。

import java.awt.*;import javax.swing.*;import java.awt.event.*;public class Example{public static void main(String[] args) {// TODO Auto-generated method stubWindow win=new Window();}}public class Window extends JFrame {Container contentPane;          //容器JPanel panel;Box interestHorizontalBox,sexHorizontalBox,allVerticalBox;JCheckBox badmintonCBox,tabletennisCBox,singCBox;//三个多选按钮,羽毛球、乒乓球、唱歌JRadioButton RBmale,RBfemale;//两个单选按钮,男、女ButtonGroup group=new ButtonGroup();//使用ButtonGroup组GridLayout grid;      //设置GridLayout布局JScrollPane pane;//设置滚动窗格JTextArea area;Listener listener;public Window() {init();setTitle("窗口");//设置窗口标题setLocation(30,30);//设置窗口位置setSize(600,600);//设置窗口大小setVisible(true);//设置窗口是否可见setDefaultCloseOperation(DISPOSE_ON_CLOSE);//设置关闭图标如何处理}void init() {//设置监听器listener=new Listener();//设置容器contentPane = getContentPane(); //设置JPanel panel面板panel=new JPanel();grid=new GridLayout(2,1);//设置两行一列的GridLayout布局panel.setLayout(grid);contentPane.add(panel,BorderLayout.NORTH);     //将JPanel面板放在窗口北边//设置兴趣行interestHorizontalBox=Box.createHorizontalBox();//创建行型盒式布局的盒式容器interestHorizontalBox.add(new JLabel("兴趣:"));badmintonCBox=new JCheckBox("羽毛球");tabletennisCBox=new JCheckBox("乒乓球");singCBox=new JCheckBox("唱歌");interestHorizontalBox.add(badmintonCBox);interestHorizontalBox.add(tabletennisCBox);interestHorizontalBox.add(singCBox);badmintonCBox.addItemListener(listener);//为该选择框设置监听器tabletennisCBox.addItemListener(listener);singCBox.addItemListener(listener);//设置性别行sexHorizontalBox=Box.createHorizontalBox();sexHorizontalBox.add(new JLabel("性别:"));RBmale=new JRadioButton("男");RBfemale=new JRadioButton("女");group.add(RBmale);//将单选按钮男加入到ButtonGroup组group.add(RBfemale);sexHorizontalBox.add(RBmale);sexHorizontalBox.add(RBfemale);RBmale.addItemListener(listener);RBfemale.addItemListener(listener);//设置列,将兴趣行和性别行分别加入到列,构成两行一列的盒式布局allVerticalBox=Box.createVerticalBox();allVerticalBox.add(interestHorizontalBox);allVerticalBox.add(Box.createHorizontalStrut(30)); //设置水平支撑高度为10allVerticalBox.add(sexHorizontalBox);panel.add(allVerticalBox);//设置JScrollPane panearea=new JTextArea();pane=new JScrollPane(area);contentPane.add(pane,BorderLayout.CENTER);//将滚动窗格放在窗口中心}public class Listener implements ItemListener{public void itemStateChanged(ItemEvent ie) {String str="";if(badmintonCBox.isSelected())str+=badmintonCBox.getText()+"\n";if(tabletennisCBox.isSelected())str+=tabletennisCBox.getText()+"\n";if(singCBox.isSelected())str+=singCBox.getText()+"\n";if(RBmale.isSelected())str+=RBmale.getText()+"\n";if(RBfemale.isSelected())str+=RBfemale.getText()+"\n";area.setText("");area.append(str);}}}



原创粉丝点击