java的GUI程序的基本思路是以JFrame为基础,它是屏幕上window的对象,能够最大化、最小化、关闭。

Swing 的三个基本构造块:标签、按钮和文本字段;但是需要个地方安放它们,并希望用户知道如何处理它们。JFrame 类就是解决这个问题

的——它是一个容器,允许程序员把其他组件添加到它里面,把它们组织起来,并把它们呈现给用户。 JFrame 实际上不仅仅让程序员把组件放入

其中并呈现给用户。比起它表面上的简单性,它实际上是 Swing 包中最复杂的组件。为了最大程度地简化组件,在独立于操作系统的Swing 组件与

实际运行这些组件的操作系统之间,JFrame 起着桥梁的作用。JFrame 在本机操作系统中是以窗口的形式注册的,这么做之后,就可以得到许多熟

悉的操作系统窗口的特性:最小化/最大化、改变大小、移动。

下面是关于JFrame类的API的运用。

源码地址:https://github.com/followwwind/javase


/**
   * 创建JFrame窗体 
   */
  public static void createWindow() {
      JFrame frame = new JFrame();
      frame.setTitle("JFrame Windows");
      frame.setLayout(null);// 设置布局
      // frame.setBackground(Color.green); 窗口无法设置背景颜色
      Container container = frame.getContentPane(); // 返回当前窗体的面板对象
      container.setBackground(Color.green);
      frame.setVisible(true);
      frame.setBounds(300, 300, 300, 300);
/*
 * setLocation();确定组件的位置 setSize( );确定组件的大小
 */
      // frame.setEnabled(false);
      frame.setIconImage(new ImageIcon("src/main/resources/image/icon.png").getImage()); // 设置窗体图标
      frame.setResizable(false); // 设置是否可以改变窗口的大小
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 设置单击关闭图标按钮后的响应
  }

  /**
   * 设置JFrame底层背景图片
   */
  public static void setBg(){
      JFrame frame = new JFrame("Set Bg");
      // 这是背景图片
      ImageIcon img = new ImageIcon("src/main/resources/image/back.jpg");
      // 将背景图放在标签里。
      JLabel imgLabel = new JLabel(img);
      // 注意这里是关键,将背景标签添加到jfram的LayeredPane面板里。
      frame.getLayeredPane().add(imgLabel, new Integer(Integer.MIN_VALUE));
      // 设置背景标签的位置
      imgLabel.setBounds(0, 0, img.getIconWidth(), img.getIconHeight());
      Container cp = frame.getContentPane();
      cp.setLayout(new FlowLayout());
      // 注意这里,将内容面板设为透明。这样LayeredPane面板中的背景才能显示出来。
      cp.add(new JButton("button"));
      ((JPanel) cp).setOpaque(false);
      frame.setSize(500, 580);
      frame.setVisible(true);
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  }