/**
作者:wwj
时间:2012/4/13
功能:实习实验所要求的功能
实验要求:
1、如下图编写一个图形用户界面,实现以下功能,源程序保存为Ex5_1.java:
(1)在文本框输入字符串,单击“输入”按钮后,在窗口下方以标签形式显示输出的内容。
(2)通过单选按钮,选择标签文字的字体样式:宋体、隶书、黑体等。
(3)通过复选框,选择标签文字的字形:粗体、斜体等
(4)通过下拉列表,设置标签文字的字号:16、18、20、22、24、26、28、30。
**/
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.font.*;
public class Ex5_1 extends JFrame
{
private JPanel p=new JPanel(); //创建一个面板容器对象
private JLabel label=new JLabel(); //
private JTextField t1=new JTextField(25);
private JButton button1=new JButton("输入");
private JRadioButton r1=new JRadioButton("宋体");
private JRadioButton r2=new JRadioButton("隶书");
private JRadioButton r3=new JRadioButton("黑体");
private ButtonGroup buttonGroup;
private JCheckBox b= new JCheckBox("粗体");
private JCheckBox i= new JCheckBox("斜体");
private JComboBox lbk;
private String font_num[]={"16","18","20","22","24","26","28","30" };
public Ex5_1()
{
Container c = getContentPane(); //创建内容面板对象
//添加文本框组件
p.add(t1);
//添加按钮组件
p.add(button1);
Bhandler h=new Bhandler();
button1.addActionListener(h);
//添加单选按钮组件
buttonGroup = new ButtonGroup(); //创建单选按钮组
r1.setFont(new Font("Serif",Font.PLAIN,14));
r2.setFont(new Font("Serif",Font.PLAIN,14));
r3.setFont(new Font("Serif",Font.PLAIN,14));
buttonGroup.add(r1); buttonGroup.add(r2);
buttonGroup.add(r3);
rhandler rh = new rhandler();
r1.addItemListener(rh);
r2.addItemListener(rh);
r2.addItemListener(rh);
p.add(r1); p.add(r2); p.add(r3);
//添加复选框组件
b.setFont(new Font("Serif",Font.PLAIN,14));
i.setFont(new Font("Serif",Font.PLAIN,14));
CBHandler cb=new CBHandler(); //创建监听对象
b.addItemListener(cb); i.addItemListener(cb); //注册监听对象
p.add(b); p.add(i);
//添加下拉列表组件
lbk = new JComboBox(font_num); //创建下拉列表对象
lbk.setMaximumRowCount(5);
lbk.setSelectedIndex(0);
lbk.addItemListener(new lbHandler()); //注册监听器
p.add(lbk);
//添加标签组件
p.add(label);
c.add(p);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true); //设置为可见
setSize(400,300); //设置窗口大小
}
public static void main(String[] args)
{
Ex5_1 f1=new Ex5_1();
}
//按钮的事件处理
private class Bhandler implements ActionListener
{
public void actionPerformed(ActionEvent event)
{
label.setText("你输入的文字是:"+t1.getText());
}
}
//单选按钮的事件处理
private class rhandler implements ItemListener
{
public void itemStateChanged(ItemEvent event)
{
if(r1.isSelected()) label.setFont(new Font("宋体",Font.PLAIN,20));
else if(r2.isSelected()) label.setFont(new Font("隶书",Font.PLAIN,20));
else label.setFont(new Font("黑体",Font.PLAIN,20));
}
}
//复选框的事件处理
private class CBHandler implements ItemListener
{
private int vb = Font.PLAIN;
private int vi = Font.PLAIN;
public void itemStateChanged(ItemEvent e)
{
if(e.getSource()==b)
vb=b.isSelected()?Font.BOLD:Font.PLAIN;
if(e.getSource()==i)
vi=i.isSelected()?Font.ITALIC:Font.PLAIN;
label.setFont(new Font("Serif",vb+vi,20));
}
}
//下拉列表的事件处理
private class lbHandler implements ItemListener
{
public void itemStateChanged(ItemEvent e)
{
int size=Integer.parseInt(font_num[lbk.getSelectedIndex()]);
if(e.getStateChange()==e.SELECTED)
label.setFont(new Font("Serif",label.getFont().getStyle(),size));
}
}
}