文章目录
常用组件与容器。
图形用户界面是由组件和容器构成的。
组件又称控制组件,是图形用户界面中不可再分的最小元素,其功能是与用户完成一次交互操作。组件包括一些比较简单的组件,如标签按钮组合框及列表等,也包括一些比较复杂的组件,如文本控件、菜单、表格、进度条、文件选择器等,它们都存放在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();
}
}