天天看点

Java 图形用户界面 综合例子

//实验5
/*
*实验内容:综合例子,把所有基本组件放在同一个窗口里显示出来
*基本组件包括:标签组件、按钮组件、文本框组件、文本区组件、单选按钮组件
*复选框组件、下拉列表组件
*实现组件的基本功能,程序运行结果如图
*/
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.Font.*;
import java.awt.Color;


public class JF extends JFrame
{	//定义7个面板分别存放7个不同组件
	private JPanel p1=new JPanel();			//标签组件面板
	private JPanel p2=new JPanel();			//按钮组件面板
	private JPanel p3=new JPanel();			//文本框组件面板
	private JPanel p4=new JPanel();			//文本区组件面板

	private JPanel p5=new JPanel();			//单选按钮组件面板
	private	JPanel PColor =new JPanel();	//创建一个用来显示颜色的面板
	private	JPanel PButton = new JPanel();	//创建存放单选按钮的面板
	private	JRadioButton red = new JRadioButton("red",true);//创建单选按钮选项
	private	JRadioButton green=new JRadioButton("green");
	private	JRadioButton blue = new JRadioButton("blue");
	
	private JPanel p6= new JPanel();		//复选框组件面板
	private	JLabel label2 = new JLabel("请注意观察宋体文字的变化");
	private	JCheckBox b = new JCheckBox("粗体");	//创建复选框
	private	JCheckBox i = new JCheckBox("斜体");	

	private JPanel p7 =new JPanel();	//下拉列表组件面板
	private JComboBox lbk;
	private JLabel label3;
	private String names[]={"计算机学院","珠宝学院","外语学院","经贸管理学院"};


	public JF()
	{
		super("综合例子");		//调用父类将窗口命名为"综合例子"
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设定窗口对象关闭动作

		Container c=getContentPane();		//创建内容面板对象
		c.setLayout(new GridLayout(4,2,0,0));//设置面板布局

		//添加标签组件
		JLabel label1 = new JLabel("This is a Label");	//使用文本创建一个标签对象
		label1.setFont(new Font("Serif",Font.BOLD,20));
		label1.setToolTipText("这是标签对象");	//设置标签的工具提示
		p1.add(label1);			//添加标签到面板
		p1.setBackground(Color.YELLOW);	//设置面板背景颜色
		c.add(p1);

		//添加组件
		JButton button1=new JButton("button1");	//创建按钮对象 
		button1.setFont(new Font("Serif",Font.PLAIN,20));	

		ImageIcon img1 = new ImageIcon("bird.gif");
		JButton button2 = new JButton("button2",img1);
		button2.setRolloverIcon(img1);
		button2.setFont(new Font("Serif",Font.PLAIN,14));

		//为按钮组件注册监听器
		BHandler bh = new BHandler();
		button1.addActionListener(bh);
		button2.addActionListener(bh);
		p2.add(button1);
		p2.add(button2);
		p2.setBackground(Color.green);
		c.add(p2);		//添加到内容面板
	
		//添加文本框组件
		JTextField t1=new JTextField();
		JTextField t2=new JTextField();
		JTextField t3=new JTextField();
		JPasswordField k1=new JPasswordField();
		p3.setLayout(new FlowLayout());
		p3.setBackground(Color.pink);
		t1=new JTextField(10);
		t2=new JTextField("Input the test",20);
		t2.setFont(new Font("Serif",Font.PLAIN,12));
		t3=new JTextField("Can not edit",20);
		t3.setFont(new Font("Serif",Font.PLAIN,12));
		t3.setEditable(false);			//设置为不可编辑	
		k1=new JPasswordField("123456",15);
		p3.add(t1); p3.add(t2); p3.add(t3);
		p3.add(k1); c.add(p3);

		//添加文本区组件
		p4.setBackground(Color.white);
		p4.setLayout(new FlowLayout());		
		JTextArea ta1=new JTextArea(2,8);
		JTextArea ta2=new JTextArea(5,10);
		ta1.setFont(new Font("Serif",Font.PLAIN,12));
		ta2.setFont(new Font("Serif",Font.PLAIN,12));
		ta1.setText("JTextArea1");
		ta2.setText("JTextArea2");
		ta2.setTabSize(10);		//设置【Tab】键跳离方法
		ta2.setLineWrap(true);	//自动换行功能方法
		ta2.setWrapStyleWord(true);//断行不断字的功能方法

		p4.add(new JScrollPane(ta1));	
		p4.add(new JScrollPane(ta2));
		c.add(p4);


		//添加单选按钮组件
		ButtonGroup buttonGroup = new ButtonGroup();	
		red.setFont(new Font("Serif",Font.PLAIN,14));
		green.setFont(new Font("Serif",Font.PLAIN,14));
		blue.setFont(new Font("Serif",Font.PLAIN,14));
		PColor.setBackground(Color.red); //设置默认背景
		buttonGroup.add(red);	buttonGroup.add(green);	//添加选项按钮到组中
		buttonGroup.add(blue);
		PButton.add(red);	PButton.add(green);
		PButton.add(blue);


		RHandler rh=new RHandler();		//创建监听器
		red.addItemListener(rh);	blue.addItemListener(rh);//注册监听器
		green.addItemListener(rh);

		p5.setLayout(new BorderLayout());
		p5.add(PColor,BorderLayout.CENTER);		//设置布局
		p5.add(PButton,BorderLayout.SOUTH);
		c.add(p5);


		//添加复选框组件
		p6.setLayout(new FlowLayout());
		label2.setFont(new Font("Serif",Font.PLAIN,35));
		p6.add(label2);

		b.setFont(new Font("Serif",Font.PLAIN,20));
		i.setFont(new Font("Serif",Font.PLAIN,20));

		CBHandler ch=new CBHandler();
		b.addItemListener(ch); i.addItemListener(ch);	
		p6.add(b); p6.add(i);
		c.add(p6);

		//添加下拉列表组件
		p7.setBackground(Color.cyan);
		lbk = new JComboBox(names);		//创建下拉列表对象
		lbk.setMaximumRowCount(4);		//设置下拉列表所能显示的列表项最大数目
		lbk.setSelectedIndex(0);		//设置默认的选项
		lbk.setFont(new Font("Serif",Font.PLAIN,15));	//设置字体
		lbk.addItemListener(new lbHandler());	//注册监听器

		label3 = new JLabel("你选择了:计算机学院");
		label3.setFont(new Font("Serif",Font.PLAIN,20));
		p7.add(lbk,BorderLayout.NORTH); 
		p7.add(label3,BorderLayout.CENTER);
		c.add(p7);



		setSize(600,600);		//设置窗口大小
		setVisible(true);		//指定窗口可见
		
	}
	public static void main(String[] args)
	{
		JF d=new JF();		//创建JF类对象d创建窗口
	}


//按钮组件的事件处理
	private class BHandler implements ActionListener
	{
		public void actionPerformed(ActionEvent event)
		{
			JOptionPane.showMessageDialog(JF.this,"你按了:"+event.
				getActionCommand());
		}
	}

//单选按钮组件的事件处理
	private class RHandler implements ItemListener
	{
		public void itemStateChanged(ItemEvent event)
		{
			if(red.isSelected())
				PColor.setBackground(Color.red);
			else if(green.isSelected())
				PColor.setBackground(Color.GREEN);
			else PColor.setBackground(Color.BLUE);
		}
	}

//复选框组件的事件处理
	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;
			label2.setFont(new Font("Serif",vb+vi,20));
		}
	}


//下拉列表组件的事件处理
	private class lbHandler implements ItemListener
	{
		public void itemStateChanged(ItemEvent e)
		{
			if(e.getStateChange()==e.SELECTED)
			{
				label3.setText("你选择了:"+names[lbk.getSelectedIndex()]);
			}
		}
	}

}
           
Java 图形用户界面 综合例子