Java基础-Swing图形界面、JFrame框架窗体

Bertha 。 2022-01-20 04:25 620阅读 0赞

1、Swing是GUI(图形用户界面)开发工具包,其包括容器、组件和布局等,继承AWT。与用户交互时涉及事件的概念。

2、JFrame框架窗体

JFrame框架窗体是一个容器,是Swing程序中各个组件的载体, JFrame jf = new JFrame();//创建

在开发中更常用的方式是通过继承java.swing.JFrame类创建一个窗体。

在JFrame对象创建完成后,需要调用getContentPane()方法将窗体转换为容器,然后在容器中添加组件或设置布局管理器,通常这个容器用来包含和显示组件。如果需要将组件添加至容器,可以使用来自Container类的add()方法进行设置。至于JPanel容器会在后面提到。

import java.awt.Color;
import java.awt.Container;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingConstants;

public class testJFrame {

  1. /\*\*
  2. \* @param ycy
  3. \*/
  4. public static void main(String\[\] args) \{
  5. JFrame jf = new JFrame();//创建
  6. Container cc= jf.getContentPane();//返回窗体ContentPane对象
  7. cc.setBackground(Color.red);//设置组件的颜色
  8. //jf.getContentPane().setBackground(Color.red);//设置组件的颜色
  9. jf.setSize(500, 200);//设置大小
  10. jf.setLocation(300, 200);//设置位置
  11. jf.setTitle("中国好!");//设置标题
  12. JLabel jl = new JLabel("我爱中国!");// 创建一个JLabel标签
  13. jl.setHorizontalAlignment(SwingConstants.CENTER);// 使标签文字居中
  14. cc.add(jl); // 将标签添加至容器
  15. jf.setVisible(true);//设置显示
  16. \}

}

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3ljeTA3MDY_size_16_color_FFFFFF_t_70

常用的窗体关闭方式有四种,分别为“DO_NOTHING_ON_CLOSE”、“DISPOSE_ON_CLOSE”、“HIDE_ON_CLOSE”、“EXIT_ON_CLOSE”。第一种表示什么也不做就将窗体关闭;第二种表示任何注册监听程序对象后会自动隐藏并释放窗体;第三种表示隐藏窗口的默认窗口关闭;第四种表示退出应用程序默认窗口关闭。

jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

3、JButton组件

按钮组件

public class testJButton {

  1. /\*\*
  2. \* @param ycy
  3. \*/
  4. public static void main(String\[\] args) \{
  5. // TODO Auto-generated method stub
  6. JFrame jf = new JFrame();//创建
  7. JButton jb = new JButton("确认");
  8. jf.add(jb);
  9. jf.setSize(500, 200);//设置大小
  10. jf.setLocation(300, 200);//设置位置
  11. jf.setTitle("中国好!");//设置标题
  12. jf.setDefaultCloseOperation(WindowConstants.EXIT\_ON\_CLOSE);//退出应用程序默认窗口关闭
  13. jf.setVisible(true);//设置显示
  14. \}

}

4、FlowLayout


该布局称为流式布局管理器,是从左到右,中间放置,一行放不下就换到另外一行。一行能放置多少组件取决于窗口的宽度。默认组件是居中对齐,可以通过FlowLayout(intalign)函数来指定对齐方式,默认情况下是居中(FlowLayout.CENTER)。FlowLayout为小应用程序(Applet)和面板(Panel)的默认布局管理器。其构造函数示例为:

FlowLayout() //生成一个默认的流式布局,组件在容器里居中,每个组件之间留下5个像素的距离。

FlowLayout(int alinment) //可以设定每行组件的对齐方式。

FlowLayout(int alignment , int horz , int vert) //设定对齐方式并设定组件水平和垂直的距离。

当容器的大小发生变化时,用FlowLayout管理的组件会发生变化。其变化规律是:组件的大小不变,但是相对位置会发生变化。

  1. public static void main(String\[\] args) \{
  2. // TODO Auto-generated method stub
  3. JFrame jf = new JFrame();//创建
  4. //jf.setLayout(new FlowLayout());//该布局称为流式布局管理器.默认组件是居中对齐,可以通过FlowLayout(intalign)函数来指定对齐方式,默认情况下是居中
  5. jf.setLayout(new FlowLayout(FlowLayout.RIGHT));//右对齐
  6. JButton jb = null;
  7. for(int i=0;i<9;i++)\{
  8. jb = new JButton("ok"+i);//创建多个按钮
  9. jf.add(jb);
  10. \}
  11. jf.setSize(500, 200);//设置大小
  12. jf.setLocation(300, 200);//设置位置
  13. jf.setTitle("中国好!");//设置标题
  14. jf.setDefaultCloseOperation(WindowConstants.EXIT\_ON\_CLOSE);//退出应用程序默认窗口关闭
  15. jf.setVisible(true);//设置显示
  16. \}

5、BorderLayout

这种布局管理器分为东、南、西、北、中心五个方位。北和南的组件可以在水平方向上拉伸;而东和西的组件可以在垂直方向上拉伸;中心的组件可同时在水平和垂直方向上同时拉伸,从而填充所有剩余空间。在使用BorderLayout的时候,如果容器的大小发生变化,其变化规律为:组件的相对位置不变,大小发生变化。例如容器变高了,则North、South 区域不变,West、Center、East区域变高;如果容器变宽了,West、East区域不变,North、Center、South区域变宽。不一定所有的区域都有组件,如果四周区域(West、East、North、South区域)没有组件,则由Center区域去补充,但是如果 Center区域没有组件,则保持空白。BorderLayout是RootPaneContainer(JInternalFrame、JDialog、JFrame、JWindow)的默认布局管理器。

public static void main(String[] args) {
// TODO Auto-generated method stub
JFrame jf = new JFrame();//创建
//jf.setLayout(new FlowLayout());//该布局称为流式布局管理器.默认组件是居中对齐,可以通过FlowLayout(intalign)函数来指定对齐方式,默认情况下是居中
jf.setLayout(new BorderLayout());//右对齐
jf.add(new JButton(“东”),BorderLayout.EAST);
jf.add(new JButton(“西”),BorderLayout.WEST);
jf.add(new JButton(“南”),BorderLayout.SOUTH);
jf.add(new JButton(“北”),BorderLayout.NORTH);
jf.add(new JButton(“中”),BorderLayout.CENTER);

  1. jf.setSize(500, 200);//设置大小
  2. jf.setLocation(300, 200);//设置位置
  3. jf.setTitle("中国好!");//设置标题
  4. jf.setDefaultCloseOperation(WindowConstants.EXIT\_ON\_CLOSE);//退出应用程序默认窗口关闭
  5. jf.setVisible(true);//设置显示
  6. \}

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3ljeTA3MDY_size_16_color_FFFFFF_t_70 1

给一些间隙,让块之间隔开

  1. public static void main(String\[\] args) \{
  2. // TODO Auto-generated method stub
  3. JFrame jf = new JFrame();//创建
  4. //jf.setLayout(new FlowLayout());//该布局称为流式布局管理器.默认组件是居中对齐,可以通过FlowLayout(intalign)函数来指定对齐方式,默认情况下是居中
  5. jf.setLayout(new BorderLayout(4,4));//增加之间的间隙
  6. jf.add(new JButton("东"),BorderLayout.EAST);
  7. jf.add(new JButton("西"),BorderLayout.WEST);
  8. jf.add(new JButton("南"),BorderLayout.SOUTH);
  9. jf.add(new JButton("北"),BorderLayout.NORTH);
  10. jf.add(new JButton("中"),BorderLayout.CENTER);
  11. jf.setSize(500, 200);//设置大小
  12. jf.setLocation(300, 200);//设置位置
  13. jf.setTitle("中国好!");//设置标题
  14. jf.setDefaultCloseOperation(WindowConstants.EXIT\_ON\_CLOSE);//退出应用程序默认窗口关闭
  15. jf.setVisible(true);//设置显示
  16. \}

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3ljeTA3MDY_size_16_color_FFFFFF_t_70 2

6、GridLayout表格布局

以表格的形式进行布局管理的,在使用此布局管理器时必须设置显示的行数和列数

public static void main(String[] args) {
// TODO Auto-generated method stub
JFrame jf = new JFrame();//创建
//jf.setLayout(new FlowLayout());//该布局称为流式布局管理器.默认组件是居中对齐,可以通过FlowLayout(intalign)函数来指定对齐方式,默认情况下是居中
jf.setLayout(new GridLayout(4,5,5,5));//GridLayout(行,列,间隔,间隔)
JButton jb = null;
for(int i=0;i<19;i++){
jb = new JButton(“JButton”+i);
jf.add(jb);
}

  1. jf.setSize(500, 200);//设置大小
  2. jf.setLocation(300, 200);//设置位置
  3. jf.setTitle("中国好!");//设置标题
  4. jf.setDefaultCloseOperation(WindowConstants.EXIT\_ON\_CLOSE);//退出应用程序默认窗口关闭
  5. jf.setVisible(true);//设置显示
  6. \}

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3ljeTA3MDY_size_16_color_FFFFFF_t_70 3

7、绝对布局

setBounds(int x, int y, int width, int height)

  1. public static void main(String\[\] args) \{
  2. // TODO Auto-generated method stub
  3. JFrame jf = new JFrame();//创建
  4. //jf.setLayout(new FlowLayout());//该布局称为流式布局管理器.默认组件是居中对齐,可以通过FlowLayout(intalign)函数来指定对齐方式,默认情况下是居中
  5. jf.setLayout(null);//
  6. JButton jb1 = new JButton("按钮1");
  7. JButton jb2 = new JButton("按钮2");
  8. jb1.setBounds(20, 50, 80, 100);//绝对布局
  9. jb2.setBounds(100, 150, 100, 100);//绝对布局
  10. jf.add(jb1);
  11. jf.add(jb2);
  12. jf.setSize(500, 200);//设置大小
  13. jf.setLocation(300, 200);//设置位置
  14. jf.setTitle("中国好!");//设置标题
  15. jf.setDefaultCloseOperation(WindowConstants.EXIT\_ON\_CLOSE);//退出应用程序默认窗口关闭
  16. jf.setVisible(true);//设置显示
  17. \}

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3ljeTA3MDY_size_16_color_FFFFFF_t_70 4

扫码关注一起随时随地学习!!!就在洋葱攻城狮,更多精彩,等你来!!

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3ljeTA3MDY_size_16_color_FFFFFF_t_70 5

发表评论

表情:
评论列表 (有 0 条评论,620人围观)

还没有评论,来说两句吧...

相关阅读