27

常用组件与容器。

   图形用户界面是由组件和容器构成的。
   组件又称控制组件,是图形用户界面中不可再分的最小元素,其功能是与用户完成一次交互操作。组件包括一些比较简单的组件,如标签按钮组合框及列表等,也包括一些比较复杂的组件,如文本控件、菜单、表格、进度条、文件选择器等,它们都存放在javax.swing包中。
   容器是若干个组件和容器的集合。容器中包含了许多界面元素,这些元素可以是组件,也可以是容器。容器实际上是对图形界面中的界面元素的一种管理,其中顶层容器和中间

容器是常用的两类形式。
显示在屏幕上的所有组件都必须包含在某个容器中。

1.顶层容器

每一个应用组件的应用程序都至少有一个顶层容器,应用程序必须创建一个顶层容器之后才能放置其他GUI容器或组件。Swng提供了4种顶层容器,分别为JFrame、JApplet、JDialog、JWindow.其中JFrame和 JDialog 最为常用

1)JFrame

是最常用的一种顶层容器,它的作用是创建一个顶层的windows窗体,它的外观就像平常windows系统下见到的窗体,带有标题栏和控制接钮等。
类提供了下面两种格式的构造方法
(1)jframe()创建不指定标题的窗体
(2)jframe(string title)创建指定标题的窗体。

2)JDialog

与JFrame一样,JDialog(对话框窗口)也是一种顶层容器,但不能作为独立的窗口容器
使用,必须依附于某个窗口(通常是JFame)。可以向对话框窗口中添加其他组件,添加方式与一样,这里不再重复介绍。其实在应用程序中主要使用模态对话框,模态对话框常用来给予用户简单的信息提示或选择,它的出现会阻塞其他组件对事件的响应。创建模态对话框常使用JOptionPane类在类内部会自动创建一个JDialog,并将自己添加到该对话框的内容窗格中。

2.中间容器

Swing的中间容器包含了一些可以被使用在许多不同环境下的中间层容器,主要包括
面板容器(JSplitPane类)、分隔窗格类)、带滚动条的窗格容器类)、工具栏类)等,它们都是JComponnent的子类,通常放在其他容类中。
面板容器与顶层容器不同,它不能独立存在,必须被添加到其他容器内部。面板可以嵌套,从而设计出复杂的图形用户界面

3.标签

标签(JLabel)对象通常用来实现一些说明性的描述,在 Swing中,用 JLabel 类实现标
签组件,并且显示形式得到了扩展,它不仅可以显示文字,还可以显示图片,它的构造方法
有以下6种形式
(1) JLabel():无参数构造方法,构造一个内容为空的标签
(2) JLabel( Icon image):构造一个显示图标的标签。
(3)JLabel(String text):构造一个显示文本信息的标签
(4)abel( Icon image, int horizontalAlignment):构造一个显示图标的标签,水平对齐方式由int型参数horizontalAlignment指定,它的取值可以是常量LEFT、 CENTER、 RIGHT、 LEADING和 TRAILING
(5) JLabel(String text, int horizontalAlignmenth):构造一个显示文本信息的标签,水平对齐方式由int型参数horizontalAlignment指定
(6) JLabel(String text, Icon imnge, int horiznntalAlip)构造一个同时显示文本
信息和图标的标签,水平对齐方式由int型参 horixontalAlignmen数指定。

4按钮

图形用户界面的基本组件之一,也是种类最多使用最繁的组件,经常的按有两种形式,即 JButton和 Togaicbutton 。jToggle Button包含两种类型的按钮 jCherkBox和JRadioButton,这些钮类的父类是 AbatretButton各种按钮上都可以设置文本,设置图标,注册事件监听器在 Ahstractlhutton类中定义了大量有关按钮件操作的方法,部分常用的方法如下
·String getText()获取按钮的标文
· void setTex( String text):设置按钮的标答文
· lcon getlcon():获取按钮的图标
· void setlcon(Icon image):设置按钮的图标
· Icon getDhsabledlcon()获取按钮禁用时显示的图标
·void setDisabledlcon( lcon image):设置按钮禁用时显示的图标
·lcon getPressedlcon():获取按钮被按下时显示的图标
· void set Pressedllcon( lcon image):设置按钮被按下时显示的图标
· Boolean isSelectedo():检测按钮是否被选中
· void setSelected(boolean):设置按钮的被选中状态。

1)JButton类

JButton类定义了最普通的按钮形式,用来响应用户的某项操作请求在顶层容器中
如果有多个按钮,某一刻只能有一个默认按钮默认按钮将呈现高亮度显示外观,并且当
层容器获得输入焦点时,按 Enter键与单击该按钮获得的效果相同,可以调用 isDefault
Button()方法检测某个按钮是否为默认按钮,也可以利用 setDfaultButton( Bautton dcfault)成员方法将某个按钮设置为默认按钮。除此之外, JButton类还提供了下面5种格式的构造方法,
· JButton()这是无参数的构造方法,它将创建一个没有文字和图标的按钮对象
·Button( Iconicon).这个构造方法将创建一个图标为icon的按钮对象
JButton( String text)这个构造方法将创建一个文本信息为text的按钮对象
· JButton(Action)这个构造方法将创建一个由a确定属性的按钮对象
·JButton(u€SriLx1Qtx€,lconicon)这个构造方法将创建一个文本信息为text、图标为icon的按钮对象

2)JTogglellutton类

切换按钮(Toggle utton)包含两个子类按钮,即复选按钮( JCheckBex)和单选按包
·(RadioButton),它们的构造方法的格式是相同的
·Togglefutton类的构造方法主要有以下几种格式
· JTogglebatton():用于创建一个既没有显示文本也没有图标的切换按
· JToggleButton( lcon icon):用于创建一个没有显示文本但有图标的切换按钮
· jToggleblutton( lcon icon, Boolean selected):用于创建一个没有显示文本但有图标
并指定初始状态的切换按钮
· IToggleButton(String text):用于创建一个有显示文本但没有图标的切换按钮
· JToggleButton( String text,,Boolean selected)用于创建一个有显示本但没有图
标并指定初始状态的切换按钮
· jTogulebutton(String text,lcon icon)于创建一个既有显示文本又有图标的切换
按钮
·jToggleButton( String text,lcon icon,Boolean selected):用于创建一个既有显示文
本又有图标并指定初始状态的切换按钮。
切换按钮是具有两种状态的按钮,即有选中和未选中两种状态,构造方法中如果没有
指定按钮的初始状态,则默认状态下处于未选中状态,在 JToggleButton类中定义了一个
isSelected()方法,通过该方法可以获知按钮的当前状态:当返回值为真(true)时表示处于选
中状态,而返回值为假(false)时表示处于未选中状态。

程序代码及结果

package Demo01;
//容器  布局  组件
import java.awt.Container;
import java.awt.Label;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;

public class DialogDemo01 extends JDialog {
	public DialogDemo01(JFrame jframe) {
		super(jframe,false);
		
		this.setBounds(100,100,100,100);
		
		Container container1=this.getContentPane();
		container1.setLayout(null);
		//container.add(new Label("大数据五班"));
		JButton button1=new JButton("我是五班");
		button1.setBounds(30, 30, 200, 50);
		container1.add(button1);
	}
	
	public static void main(String[] args) {
		JFrame j=new  JFrame();
		j.setVisible(true);
		j.setBounds(100, 50, 300, 300);
		j.setDefaultCloseOperation(EXIT_ON_CLOSE);
		
		Container container=j.getContentPane();
		container.setLayout(null);
		
		JButton button=new JButton("我要登录");
		button.setBounds(30, 30, 200, 50);
		button.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				DialogDemo01 s=new DialogDemo01 (j);
				s.setVisible(true);
				
				
				System.out.println("我被点击了");
			}
		});
		container.add(button);
	}

}

在这里插入图片描述

package Demo02;

import java.awt.Container;
import java.awt.GridLayout;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
//面板作为容器不能单独存在,必须放在其他容器 JFrame  ,jDialog
public class JpaneDemo02  extends JFrame {
	public JpaneDemo02() {
		Container container1=this.getContentPane();
		container1.setLayout(new GridLayout(2,1,10,10));
		JPanel panel=new JPanel(new GridLayout(1,3));
		panel.add(new JButton("1"));
		panel.add(new JButton("2"));
		panel.add(new JButton("3"));
		container1.add(panel);
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
		this.setVisible(true);
		this.setBounds(100, 100, 500, 500);
	}
		
	public static void main(String[] args) {
		new JpaneDemo02();
		
	}

}

在这里插入图片描述

package Demo02;

import java.awt.Container;
import java.awt.GridLayout;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;

public class JScrollDemo02 extends JFrame {
	public JScrollDemo02() {
		Container container1=this.getContentPane();
		//文本域
		JTextArea textarea=new JTextArea(20,50);
		textarea.setText("大数据五班");
		
		//scroll面板
		JScrollPane scrollPane =new JScrollPane(textarea);
		container1.add(scrollPane);
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
		this.setVisible(true);
		this.setBounds(100, 100, 500, 500);
	}
		
	public static void main(String[] args) {
		new JScrollDemo02();
		
	}

}

在这里插入图片描述

package Demo03;

import java.awt.FlowLayout;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.WindowConstants;

public class TeastFlowLayout {
	public static void main(String[] args) {
		JFrame j=new  JFrame();
		j.setVisible(true);
		j.setBounds(100, 50, 300, 300);
		j.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
	    //j.setLayout(new FlowLayout());不传参数默认居中
	    //j.setLayout(new FlowLayout(FlowLayout.RIGHT));//靠右
		j.setLayout(new FlowLayout(FlowLayout.LEFT));//靠左
	    
		JButton button1=new JButton("button1");
		JButton button2=new JButton("button2");
		JButton button3=new JButton("button3");
		JButton button4=new JButton("button4");
		JButton button5=new JButton("button5");
		JButton button6=new JButton("button6");
		j.add(button1);
		j.add(button2);
		j.add(button3);
		j.add(button4);
		j.add(button5);
		j.add(button6);
	}

}

在这里插入图片描述

package Demo03;

import java.awt.BorderLayout;
import java.awt.FlowLayout;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.WindowConstants;

public class TestBorderLayout {
	public static void main(String[] args) {
		JFrame j=new  JFrame();
		j.setVisible(true);
		j.setBounds(100, 50, 300, 300);
		j.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
	    //j.setLayout(new FlowLayout());不传参数默认居中
	    //j.setLayout(new FlowLayout(FlowLayout.RIGHT));//靠右
		//j.setLayout(new FlowLayout(FlowLayout.LEFT));//靠左
	    
		JButton east=new JButton("east");
		JButton west=new JButton("west");
		JButton south=new JButton("south");
		JButton north=new JButton("north");
		JButton center=new JButton("居中");
		
		j.add(east,BorderLayout.EAST);
		j.add(west,BorderLayout.WEST);
		j.add(south,BorderLayout.SOUTH);
		j.add(north,BorderLayout.NORTH);
		j.add(center,BorderLayout.CENTER);
		
	}

}

在这里插入图片描述

package Demo03;

import java.awt.FlowLayout;
import java.awt.GridLayout;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.WindowConstants;

public class TestGrid {
	public static void main(String[] args) {
		JFrame j=new  JFrame();
		j.setVisible(true);
		j.setBounds(100, 50, 300, 300);
		j.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
	    //j.setLayout(new FlowLayout());不传参数默认居中
	    //j.setLayout(new FlowLayout(FlowLayout.RIGHT));//靠右
		j.setLayout(new GridLayout(3,2));
	    
		JButton button1=new JButton("button1");
		button1.setSize(50, 50);
		JButton button2=new JButton("button2");
		button2.setSize(50, 50);
		JButton button3=new JButton("button3");
		JButton button4=new JButton("button4");
		JButton button5=new JButton("button5");
		//JButton button6=new JButton("button6");
		j.add(button1);
		j.add(button2);
		j.add(button3);
		j.add(button4);
		j.add(button5);
		//j.add(button6);
		//j.pack();
	}

}

在这里插入图片描述

package Demo04;

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.GridLayout;

import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
//面板作为容器不能单独存在,必须放到其他容器里面 JFrame ,jDialog
public class CheckBox extends JFrame{
	public CheckBox() {
		Container container1=this.getContentPane();
		//多选框
		JCheckBox checkbox1=new JCheckBox("自动登录");
		JCheckBox checkbox2=new JCheckBox("记住密码");
		JCheckBox checkbox3=new JCheckBox("checkbox3");
	
		//在一个group里面只能有一个被选中
		
		
		
		
		
		container1.add(checkbox1,BorderLayout.CENTER);
		container1.add(checkbox2,BorderLayout.EAST);
		container1.add(checkbox3,BorderLayout.WEST);
		
		
		
		
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
		this.setVisible(true);
		this.setBounds(100,100,500,500);
	}
	
	public static void main(String[]args) {
		new CheckBox();
	}
}

在这里插入图片描述

package Demo04;

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.GridLayout;

import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
//面板作为容器不能单独存在,必须放到其他容器里面 JFrame ,jDialog
public class RadioButon extends JFrame{
	public RadioButon() {
		Container container1=this.getContentPane();
		//单选框
		JRadioButton radiobutton1=new JRadioButton("单选1");
		JRadioButton radiobutton2=new JRadioButton("JRadioButton2");
		JRadioButton radiobutton3=new JRadioButton("JRadioButton3");
		JRadioButton radiobutton4=new JRadioButton("JRadioButton4");
		//在一个group里面只能有一个被选中
		ButtonGroup group=new ButtonGroup();
		group.add(radiobutton1);
		group.add(radiobutton2);
		group.add(radiobutton3);
		
		
		
		
		container1.add(radiobutton1,BorderLayout.CENTER);
		container1.add(radiobutton2,BorderLayout.NORTH);
		container1.add(radiobutton3,BorderLayout.SOUTH);
		container1.add(radiobutton4,BorderLayout.EAST);
		
		
		
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
		this.setVisible(true);
		this.setBounds(100,100,500,500);
	}
	
	public static void main(String[]args) {
		new RadioButon();
	}
}

在这里插入图片描述

package Demo05;

import java.awt.Container;
import java.awt.GridLayout;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
//面板作为容器不能单独存在,必须放在其他容器 JFrame  ,jDialog
public class TextComBoxDemo01 extends JFrame {
	public TextComBoxDemo01() {
		Container container1=this.getContentPane();
		JComboBox status=new JComboBox();
		status.addItem(null);
		status.addItem("正在学习");
		status.addItem("准备睡觉");
		status.addItem("看电视");
		container1.add(status);
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
		this.setVisible(true);
		this.setBounds(100, 100, 500, 500);
	}
		
	public static void main(String[] args) {
		new TextComBoxDemo01();
		
	}

}

在这里插入图片描述

package Demo05;

import java.awt.Container;
import java.awt.GridLayout;
import java.util.Vector;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JPanel;
//面板作为容器不能单独存在,必须放在其他容器 JFrame  ,jDialog
public class TextComBoxDemo2 extends JFrame {
	public TextComBoxDemo2() {
		Container container1=this.getContentPane();
		//下拉框
		Vector<Object>contents=new Vector();
		JList jlist=new JList(contents);
		contents.add("袁雪华");
		contents.add("爱学习");
		contents.add("小龙");
		contents.add("兼得");
		container1.add(jlist);
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
		this.setVisible(true);
		this.setBounds(100, 100, 500, 500);
	}
		
	public static void main(String[] args) {
		new TextComBoxDemo2();
		
	}

}

在这里插入图片描述

大数据2005周敏2020080605048

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值