简单记录下页面中用到的GUI组件,方便查阅,swing为主
java的GUI大致可以分为容器和控件两个部分,其中控件像按钮,文本框用来实现某种特定功能,而容器则是用来盛放各个控件还有其它容器,多用于布局。
窗口容器:
理论上图形用户界面都需要一个基础的窗口组件(有红叉叉的那种),窗口容器不能相互包含。
JFarme是SWing 里的窗口容器,其构造函数就是生成一个窗口(“带题目”)。
一般生成窗口时都会先继承该类然后实现,要注意创建出的窗口对象还几乎没有任何属性(包括位置,大小,可见性,关闭按钮云云),都要手动实现
public class MyFrame extends JFrame
{
JMenuBar bar; //上菜单栏
JMenu Menu1,Menu2;
JMenuItem item1_1,item2_1;
JPanel JP1,JP2;
JTextArea tA1,tA2,tA3;
JTextField tF1;
JButton JB1;
public MyFrame ()//该类的构造方法
{
super("电影查询"); //实现父类构造方法
this.setSize(800, 600); //设置窗口大小
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //点击叉号时关闭窗口并结束程序
this.setLocation(500, 200); //设置窗口位置(左上角)
this.setVisible(true); //设置为可见(不写看不见...)
}
}
- 普通容器
JPane是一个基础容器,仅仅用于布局划分,还有一个带滚动条的容器JScrollPane;
多数容器的构造方法都可以选择布局管理器或者内部组件,实例化后使用add()方法添加内部组件 - 布局管理器
几乎所有的组件都可以用setLocation来设置其在容器中的位置,但如果想要快速的进行布局,就要使用布局管理器
FlowLayout:浮动布局管理器
BorderLayout:边框布局管理器
GridLayout:网格布局管理器
CardLayout:卡片布局管理器
GridBagLayout:网格包布局管理器
添加了布局管理器的容器在add方法时可以使用组件之外的参数来确定插入组件的位置 - 文本框和文本域
需要文本显示时使用JTextArea或JTextfiled来创建文本区域(分别是一行和多行的区别)
使用setEditable来设置是否接受输入。可以用来区分输入框和显示框 - 按钮
Button,JButtton
public void showMessage()
{
//中部显示栏
JP1 = new JPanel(new GridLayout(1, 3));
JP2 = new JPanel(new FlowLayout());
this.add(JP1,"Center");
this.add(JP2, "South");
tA1 = new JTextArea();tA2 = new JTextArea();tA3 = new JTextArea();
tA2.setBackground(Color.blue);
JP1.add(new JScrollPane(tA1));JP1.add(new JScrollPane(tA2));JP1.add(new JScrollPane(tA3));
tA1.setEditable(false);tA2.setEditable(false);tA3.setEditable(false);
tA1.setText("jhahhajdf");
//下部状态栏
tF1 = new JTextField("搜索时间", 60); tF1.setEditable(false);
JP2.add(tF1);
JB1 = new JButton("保存为文件");
JB1.setEnabled(false);
JP2.add(JB1);
this.setVisible(true);
}
- 上菜单栏
菜单栏的实现需要三个对象JMenuBar,JMenu,JMenuItem
JMenuBar是创建菜单域(菜单栏容器)
JMenu是其中具体菜单按钮
JMenuItem是每一个菜单中的选项
层层嵌套,声明后用add添加
public void showContrl()
{
//添加上菜单栏
bar = new JMenuBar();
this.add(bar,"North");
Menu1 = new JMenu("启动");
Menu2 = new JMenu("配置");
bar.add(Menu1); bar.add(Menu2);
item1_1 = new JMenuItem("启动1");
item1_1 = new JMenuItem("启动2");
Menu1.add(item1_1);
item2_1 = new JMenuItem("配置1");
item2_1 = new JMenuItem("配置2");
Menu2.add(item2_1);
// this.setVisible(false);
// this.setVisible(true);
}