学习内容
一、常用组件与容器
1.1容器
2布局管理
1.1FlowLayout布局管理器
1.2BordeLayout布局管理器
1.3GridLayout布局管理器
一、常用组件与容器
图形用户界而是由组件和容器构成的。
组件又称控制组件。是图形用户界面不可再分的最小元素,其功能是与用户完成一次交互操作。Swing组件包括一些比较简单的组件,如标签、按钮、组合柜及列表等,也包括一些比较复杂的组件,如文本控件、菜单、表格、进度条、文件选择器等,它们都存放在javax.swing包中。
容器是若干个组件和容器的集合。容器中包含了许多界面元素,这些元素可以是组件,也可以是容器。容器实际是对图形界面中的界面元素的一种管理,其中顶层容器和中间容器是常用的两类形式。
显示在屏幕上的所有组件都必须包含在某个容器中,所以这里首先介绍容器的主要用途及使用方式,然后对一些较为常用的组件进行介绍。
1.1容器
每一个应用组件的应用程序都至少有一个顶层容器 ,应用程序必须创建一个顶层容器之后才能放置其他GUI容器或组件。
Swing提供了4种顶层容器。分别为JFrame、JApplet、JDialog和JWindow。其中,JFrame 和JDialog最为常用。
JFrame
JFreme是最常用的种顶层容器。 它的作用是创建一个顶层的 Windows窗体,它的外观就像平常Windows系统下见到的窗体,带有标题栏和控制按钮等。
JFrame类提供了下面两种格式的构造方法。
(1)JFrame():创建不指定标题的窗体。
(2)JFrame(String title): 创建指定标题的窗体。
JFrame类的其他常用方法有以下几个。
(1 void setDefaultCloseOperation(int op):设置关闭窗口时所做的操作.op可取的值包括HIDE_ON_CLOSE(关闭窗口时隐藏)、EXIT_ON_ CLOSE关闭窗口时退出应用程序,不可用于Applet)、DISPOSE_ON_CLOSE(关闭窗口时隐藏窗口并释放资源)、NOTH_ING_ON_CLOSE(关闭窗口时不做任何事情,通常配合监听器使用)。
(2) void setContentPane(Container contentPane);设置窗口的内容窗格。
(3)Container getContentPane():返回窗口的内容窗格。
(4)void seJMenuBar(JMenuBar menuBar);设置窗口的菜单栏。
(5)JMenuBar geJMenuBar();返回窗口的菜单栏。
(6)void setSize(int widh,int high);将窗口设置宽为wdth,高为hight。
每一个顶层容器都有一个内容窗格(ComemPmo),面层容器中除菜单之外的组件都放在这个内容商格中。可以调用顶层容器中的conmemPn方法得到当前容器的内容窗格,并使用add方法将组件添加到其中。
实例演示:
package com.hg.day27.demo01;
import javax.swing.;
import java.awt.;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import static javax.swing.WindowConstants.EXIT_ON_CLOSE;
public class DialogDemo01 extends JDialog {
public DialogDemo01(JFrame jframe) {
super(jframe,false);
this.setBounds(100,100,500,500);
Container container = this.getContentPane();
container.setLayout(null);
// container.add(new Label(“大数据五班”));
JButton button = new JButton(“我是五班”);
button.setBounds(30,30,200,50);
container.add(button);
}
public static void main(String[] args) {
JFrame j = new JFrame();
j.setVisible(true);
j.setBounds(100,100,700,500);
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);
}
}
前面介绍了Swing容器,以及将组件放入容器中的基本方法,当容器中包含多个组件时,组件的布局包括位置和大小)就显得t分重要。Java布局组件的基本策略是采用布局管理器。每个容器(如顶层容器的内容窗格)都有一个默认的布局管理器,开发者可以通过容器的setLayout()方法改变容器的布局管理器。
实例演示:
package com.hg.day27.demo02;
import javax.swing.;
import java.awt.;
//面板作为容器不能单独存在,必须放到其他容器里面JFrame,JDialog
public class JScrollDemo extends JFrame {
public JScrollDemo(){
Container container = this.getContentPane();
//文本域
JTextArea textarea =new JTextArea(20,50);
textarea.setText(“大数据五班”);
//scroll面板
JScrollPane scrollPane =new JScrollPane(textarea);
// JPanel scrollPane =new JPanel();
// scrollPane.add(textarea);
container.add(scrollPane);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setVisible(true);
this.setBounds(100,100,500,500);
}
public static void main(String[] args) {
new JScrollDemo();
}
}