`
mmdev
  • 浏览: 12894468 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

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()]);
			}
		}
	}
}









分享到:
评论

相关推荐

    第9章Java-Swing图形用户界面-Java面向对象程序设计教程-微课视频-程杰-清华大学出版社.pptx

    第9章Java-Swing图形用户界面-Java面向对象程序设计教程-微课视频-程杰-清华大学出版社全文共27页,当前为第8页。 9.3.3GridLayout布局 GridLayout是使用较多的布局,其基本的布局策略是把容器划分成若干行乘若干列...

    java语言与面向对象程序设计形考4-0001.docx

    java语言与面向对象程序设计形考4-0001 java语言与面向对象程序设计形考4-0001全文共12页,当前为第1页。java语言与面向对象程序设计形考4-0001全文共12页,当前为第1页。java语言与面向对象程序设计形考4-0001 java...

    JAVA语言程序设计【高清版】.pdf

    130 7.2.2 公共异常 132 7.3 抛出语句 133 7.4 创建自己的异常 135 习题 137 第8章 图形用户界面设计 140 8.1 AWT与Swing 140 8.1.1 AWT包与Swing包 140 8.1.2 组件、容器及内容窗格 141 8.2 Swing...

    Java语言程序设计(一)课后习题第十二章(附答案).doc

    Java语言程序设计(一)课后习题第十二章(附答案) 十二、常用组件之一________命令按钮与标签框 1.判断:标签是是一个容器。() 2.判断:在Swing用户界面的程序设计中,容器可以被添加到其它容器中去。() 3. 用户不...

    Java编程语言详细教程

    ★ 第五讲 AWT图形用户界面设计 ◇课前索引 ◇5.1 用AWT生成图形化用户界面 ◇5.2 AWT事件处理模型 ◇5.3 AWT组件库 ◇本讲小结 ◇课后习题 ★ 第六讲 Java的线程和Java Applet ◇课前索引 ◇6.1 线程简介...

    【设计】java高级程序设计期末复习题.docx

    java.awt包是Java语言用来构建图形用户界面(GUI)的类库。( ) 3. 容器,一个容器可以容纳多个构件,并使他们成为一个整体。( ) 4. Java中所有的类都是通过直接或间接地继承 5. Java的图形用户界面的最基本的...

    Java语言与面向对象与程序设计.rar

    c&r第7章 图形用户界面的设计与实现 5F!k1c:j$H4N(W7.1 图形用户界面概述 6d0k$J3Q0A6u3Lwww.mscbsc.com7.2 用户自定义成分 "n/d3[;t3u8G,A&p&|MSCBSC 移动通信论坛7.3 Java的事件处理www.mscbsc.com8i9Y!u#a#e-a0w...

    java源码包---java 源码 大量 实例

    Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM...

    JAVA清华大学教程

    ★ 第五讲 AWT图形用户界面设计 ◇课前索引 ◇5.1 用AWT生成图形化用户界面 ◇5.2 AWT事件处理模型 ◇5.3 AWT组件库 ◇本讲小结 ◇课后习题 ★ 第六讲 Java的线程和Java Applet ◇课前索引 ◇6.1 线程简介...

    JAVA 清华大学 教程

    ★ 第五讲 AWT图形用户界面设计 ◇课前索引 ◇5.1 用AWT生成图形化用户界面 ◇5.2 AWT事件处理模型 ◇5.3 AWT组件库 ◇本讲小结 ◇课后习题 ★ 第六讲 Java的线程和Java Applet ◇课前索引 ◇6.1 线程简介...

    清华大学JAVA教程

    ★ 第五讲 AWT图形用户界面设计 ◇课前索引 ◇5.1 用AWT生成图形化用户界面 ◇5.2 AWT事件处理模型 ◇5.3 AWT组件库 ◇本讲小结 ◇课后习题 ★ 第六讲 Java的线程和Java Applet ◇课前索引 ◇6.1 线程简介...

    JAVA程序设计教程

    第一章程序和程序设计 .......................................................................................................1 §1.1 什么是程序 ?........................................................

    JAVA上百实例源码以及开源项目

     Java 3DMenu 界面源码,有人说用到游戏中不错,其实平时我信编写Java应用程序时候也能用到吧,不一定非要局限于游戏吧,RES、SRC资源都有,都在压缩包内。 Java zip压缩包查看程序源码 1个目标文件 摘要:Java源码...

    易语言程序免安装版下载

     支持静态链接其它编程语言(如C/C++、汇编等)编译生成的静态库(.LIB或.OBJ),但仅限于COFF格式,支持cdecl和stdcall两种函数调用约定。  使用说明如下:函数声明和调用方法与DLL命令一致;“库文件名”以.lib...

    JAVA上百实例源码以及开源项目源代码

     Java 3DMenu 界面源码,有人说用到游戏中不错,其实平时我信编写Java应用程序时候也能用到吧,不一定非要局限于游戏吧,RES、SRC资源都有,都在压缩包内。 Java zip压缩包查看程序源码 1个目标文件 摘要:Java源码...

    java开源包8

    在浏览器上运行Java程序 Doppio DoppioVM 是一个可在浏览器上直接运行 Java 项目的系统,无需任何插件支持。目前它包含一个完整的虚拟机以及一个 javap 字节码反汇编器。 brap(Java远程调用框架 BRAP) 一个Java远程...

    java开源包10

    在浏览器上运行Java程序 Doppio DoppioVM 是一个可在浏览器上直接运行 Java 项目的系统,无需任何插件支持。目前它包含一个完整的虚拟机以及一个 javap 字节码反汇编器。 brap(Java远程调用框架 BRAP) 一个Java远程...

    java开源包1

    在浏览器上运行Java程序 Doppio DoppioVM 是一个可在浏览器上直接运行 Java 项目的系统,无需任何插件支持。目前它包含一个完整的虚拟机以及一个 javap 字节码反汇编器。 brap(Java远程调用框架 BRAP) 一个Java远程...

Global site tag (gtag.js) - Google Analytics