Java语言程序设计 第8章 图形用户界面 -容器、组件

//例8.1 窗口容器
/*
*本例介绍的应用程序创建一个可以移动、改变大小、最大化、可变成图标且可以关闭的窗口
*运行程序可以弹出窗口对象,结果如图所示
*/
import javax.swing.*;
import java.awt.*;
public class JF0 extends JFrame
{
	public JF0(String s)
	{
		super(s);	//调用父类JFrame的构造方法,给窗口命名
		setBounds(200,200,500,400);	//设置窗口位置,窗口大小
		setVisible(true);			//设置窗口是否可见
	try
	{
		UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
	}
	catch (Exception e)	{}
	setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);	//设置窗口关闭动作
	}
public static void main(String[] args)
{
	JF0 d=new JF0("主窗口");
}
}


//例8.2 对话框容器
//创建对话框例子,程序运行结果如图所示
import javax.swing.*;
public class JD extends JDialog
{
	public JD(JFrame f,String s)
	{
		super(f,s);			//调用父类JDialog的构造方法,给对话框窗口命名
		setBounds(300,300,200,200);	//设置对话框窗口大小位置
		setVisible(true);	//设置对话框窗口是否可见
		setModal(false);	//设置对话框窗口模式,此为无模式
		setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
	}
	public static void main(String[] args)
	{
		JF0 f=new JF0("主窗口"); //创建一个主窗口对象,f是实例化JF0类创建的
		JD d=new JD(f,"这是一个对话框窗口");//创建一个对话框窗口对象
	}
}


//例8.3 面板容器
//创建含有面包窗口的例子,程序运行结果如图所示

import javax.swing.*;
import java.awt.*;
import java.awt.Color;
public class JP1 extends JFrame
{
	public JP1(JFrame f,int x,int y,int w,int h)
	{
		Container c=getContentPane();
						//调用getContentPane()方法创建Container内容面板对象c
		c.setLayout(null);	//设置不采用任何布局方式
		c.setBackground(Color.yellow); //设置面包的被解释为黄色
		f.add(c);		//将内容面板c加入窗口对象f中
		JPanel p=new JPanel();		//创建面板对象p
		p.setBounds(x,y,w,h);		//设置面板p的位置,大小
		p.setBackground(Color.blue);//设置面板的背景色为蓝色
		c.add(p);		//将面板p加入到窗口的内容面板c中
	}
	public static void main(String[] args)
	{							//创建一个JP1类的对象f1,它是一个具有内容面板对象c、
									//普通面板p的窗口对象
		JP1 f1=new JP1(new JF0("添加面板的窗口"),100,50,200,200);
	}
}

//例 8.4 标签组件
//本例应用程序用来创建添加有不同标签的窗口,程序运行结果如图
import javax.swing.*;
import java.awt.*;
public class JL1 extends JFrame
{
	private JLabel label;
	public JL1(JFrame f,JPanel p)
	{
		f.add(p);		//将面板p加入窗口f中
		label=new JLabel("显示文字的标签");//使用文本创建一个标签对象
		label.setFont(new Font("Serif",Font.PLAIN,20));	//设置标签字体
		label.setToolTipText("这是标签对象");	//设置标签的工具提示
		p.add(label);	//将标签对象添加到面板对象p上
	}
	public static void main(String[] args)
	{
		JL1 f1=new JL1(new JF0("添加标签的窗口"),new JPanel());
	}
}

//例8.5 按钮组件
//本例应用程序用来创建添加有不同按钮的窗口,程序运行结果如图
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class JB extends JFrame
{
	private JButton button1,button2;
	public JB(JFrame f,JPanel p)
	{
		f.add(p);			//将面板p加入到窗口f中
		button1=new JButton("按钮1"); //创建按钮对象
		button1.setFont(new Font("Serif",Font.PLAIN,20));

		ImageIcon img1=new ImageIcon("F:/1.jpg");
		ImageIcon img2=new ImageIcon("F:/2.gif");
		button2=new JButton("按钮2",img2);
		button2.setRolloverIcon(img1);
		button2.setFont(new Font("Serif",Font.PLAIN,10));

		//为组件注册监听器
		BHandler h=new BHandler();
		button1.addActionListener(h);
		button2.addActionListener(h);

		//将各种组件添加到内容面板
		p.add(button1);
		p.add(button2);

	}
	public static void main(String[] args)
	{
		JB f1=new JB(new JF0("添加按钮的窗口"),new JPanel());
	}
	private class BHandler implements ActionListener
	{
		public void actionPerformed(ActionEvent event)
		{
			JOptionPane.showMessageDialog(JB.this,"你按了: "+event.getActionCommand());
		}
	}
}

//例8.6 文本框组件
//本例应用程序用来创建添加有不同文本框的窗口,程序运行结果如图
import javax.swing.*;
import java.awt.*;
public class JT extends JFrame
{
	private JTextField t1,t2,t3;
	private JPasswordField k1;
	public JT(JFrame f,JPanel p)
	{
		f.add(p);			//将面板p加入到窗口f中
		p.setLayout(new FlowLayout());
		p.setBackground(Color.YELLOW);

		t1=new JTextField(10);	//创建文本框对象,宽度为10
		t2=new JTextField("请输入文本");//创建带有初始文本的文本框对象
		t2.setFont(new Font("Serif",Font.PLAIN,12));	//设置字体
		t3=new JTextField("不可编辑的文本框",20);
								//创建带有初始文本的文本框,宽度为20
		t3.setFont(new Font("Serif",Font.PLAIN,12));
		t3.setEditable(false);		//设置该文本框为不可编辑状态
		k1=new JPasswordField("口令",10);  //创建密码框

		p.add(t1); p.add(t2); p.add(t3); p.add(k1);
	}
	public static void main(String[] args)
	{
		JT d=new JT(new JF0("添加文本框的窗口"),new JPanel());
	}
}

//例8.7 文本区的组件
//本例应用程序用来创建添加有两个文本区组件的窗口,程序运行结果如图
import java.awt.*;
import javax.swing.*;
public class JTA extends JFrame
{
	private JTextArea ta1,ta2,ta3,ta4;
	public JTA(JFrame f,JPanel p)
	{
		f.add(p);
		p.setLayout(new GridLayout(4,1,5,5));
		ta1=new JTextArea();		//利用不同的构造方法创建文本区对象
		ta2=new JTextArea(2,8);
		ta3=new JTextArea("3");
		ta4=new JTextArea("4",5,10);
		ta1.setFont(new Font("Serif",Font.PLAIN,12));
		ta2.setFont(new Font("Serif",Font.PLAIN,12));
		ta3.setFont(new Font("Serif",Font.PLAIN,12));
		ta4.setFont(new Font("Serif",Font.PLAIN,12));
		ta1.setText("JTextArea1");		//setText()方法会将原来的内容清除
		ta2.append("JTextArea2");		//append()方法会将设置的字符串接在原来文本区文字之后
		ta4.setTabSize(10);				//设置[Tab]键的跳离距离方法
		ta4.setLineWrap(true);			//自动换行功能方法
		ta4.setWrapStyleWord(true);		//断行不断字功能方法

		p.add(new JScrollPane(ta1)); p.add(new JScrollPane(ta2));
		p.add(new JScrollPane(ta3)); p.add(new JScrollPane(ta4));
	}
	public static void main(String[] args)
	{
		JTA d=new JTA(new JF0("添加文本区的窗口"),new JPanel());
	}
}

//例8.8 单选按钮组件
//本例应用程序用来创建包含3个颜色单选按钮的窗口,根据选择可以显示不同的颜色
//程序运行结果如图
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class JR extends JFrame
{
	private JPanel p1,p2;
	private JRadioButton red,green,blue;
	private ButtonGroup buttonGroup;
	public JR(JFrame f)
	{
		Container c=getContentPane();	//创建内容面板对象c
		f.add(c);
		p1=new JPanel();				//创建一个用来显示颜色的面板对象
		p1.setBackground(Color.RED);
		c.add(p1,BorderLayout.CENTER);

		buttonGroup=new ButtonGroup();	//创建单选按钮组
		red=new JRadioButton("红色",true);
		green=new JRadioButton("绿色");
		blue=new JRadioButton("蓝色");
		red.setFont(new Font("Serif",Font.PLAIN,14));	//设置字体
		green.setFont(new Font("Serif",Font.PLAIN,14));
		blue.setFont(new Font("Serif",Font.PLAIN,14));
		buttonGroup.add(red); buttonGroup.add(green); buttonGroup.add(blue);
												//添加选项按钮到组中
		rHandler h=new rHandler();				//创建监听器
		red.addItemListener(h); blue.addItemListener(h);
		green.addItemListener(h);

		p2=new JPanel();			//创建存放单选按钮的面板
		p2.add(red); p2.add(green); p2.add(blue);
		c.add(p2,BorderLayout.SOUTH);
	}
	public static void main(String args[])
	{
		JR application=new JR(new JF0("通过单选框选择颜色的窗口"));
	}
	private class rHandler implements ItemListener
	{
		public void itemStateChanged(ItemEvent event){
			if(red.isSelected())	p1.setBackground(Color.red);
		else if(green.isSelected()) p1.setBackground(Color.GREEN);
		else p1.setBackground(Color.BLUE);
	}
	}
}
	

//例8.9 复选框
//本例应用程序用来创建包含两个字体复选按钮的窗口,
//根据选择可以改变窗口标签对象的字体
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Jcb extends JFrame
{
	private JLabel label; private JCheckBox b,i;
	public Jcb(JFrame f)
	{
		Container c=getContentPane(); c.setLayout(new FlowLayout());
		c.setBackground(Color.YELLOW);
		f.add(c);
		label=new JLabel("请注意观察字体的变化");
		label.setFont(new Font("Serif",Font.PLAIN,20));//创建标签对象,并设置字体
		c.add(label);

		b=new JCheckBox("粗体");			//创建复选框
		i=new JCheckBox("斜体");
		b.setFont(new Font("Serif",Font.PLAIN,16));
		i.setFont(new Font("Setif",Font.PLAIN,16));
		b.setBackground(Color.YELLOW);
		i.setBackground(Color.YELLOW);

		CBHandler h=new CBHandler();		//创建监听器对象
		b.addItemListener(h); i.addItemListener(h);	//注册监听器
		c.add(b); c.add(i);
	}
	public static void main(String args[])
	{
		Jcb d=new Jcb(new JF0("包含复选框的窗口"));
	}
	
	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.BOLD:Font.PLAIN;
			label.setFont(new Font("Serif",vb+vi,20));
		}
	}
}

//例8.10 下拉列表组件
//本例应用程序用来创建一个下拉列表组件的窗口
//根据选择下拉列表的菜单可以显示不同的文字,程序运行结果如图
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Jlb extends JFrame
{
	private JComboBox lbk;
	private JLabel label;
	private String names[]={"北京大学","复旦大学","南京大学","武汉大学"};

	public Jlb(JFrame f)
	{
		Container c=getContentPane();
		c.setBackground(Color.YELLOW);
		f.add(c);
		lbk=new JComboBox(names);	//创建下拉列表对象
		lbk.setMaximumRowCount(4);  //设置下拉列表所能显示的列表项的最大数目
		lbk.setSelectedIndex(0);	//设置默认的选择项
		lbk.setFont(new Font("Serif",Font.PLAIN,14)); //设置字体
		lbk.addItemListener(new lbHandler());		//注册监听器

		label=new JLabel("你选择了:北京大学");
		label.setFont(new Font("Serif",Font.PLAIN,14));
		c.add(lbk,BorderLayout.NORTH);
		c.add(label,BorderLayout.CENTER);
	}

	public static void main(String []args)
	{
		Jlb d=new Jlb(new JF0("下拉列表窗口"));
	}

	private class lbHandler implements ItemListener
	{
		public void itemStateChanged(ItemEvent e)
		{
			if(e.getStateChange()==e.SELECTED)
			{
				label.setText("你选择了:"+names[lbk.getSelectedIndex()]);
			}
		}
	}
}









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值