您的位置:首页 > 产品设计 > UI/UE

GUI—布局、监听器

2017-11-21 19:26 190 查看
作业:

编写一个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 stub
Window 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)); //设置水平支撑高度为10
allVerticalBox.add(sexHorizontalBox);

panel.add(allVerticalBox);

//设置JScrollPane pane
area=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);
}

}
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: