【08_1】java | 图形界面用户设计——JFrame框架

容器

java的图形用户界面由组件构成。容器为特殊的组件。组件必须放在容器中,不能单独存在。所以容器是用来放置组件的“杯子”。

四种顶层容器:即最外层的容器。一般顶层容器不能嵌套。

  • JFrame
  • JApplet
  • JWindow
  • JDialog

一种常用的非顶层容器:JPanel。JPanel可以嵌套使用。


JFrame的使用套路:

JFrame常用语句:

import java.awt.Container;
import java.awt.Color;
import java.awt.BorderLayout;
//导入javax.swing包中所需要的类
import javax.swing.JFrame;	//导入框架设计所需的包
JFrame frame = new JFrame(); //新建JFrmae窗口
Container contentPane = frame.getContentPane(); //获得内容窗格
//对JFrame的基本设置
frame.setSize(600,400);
frame.setBackground(Color.CYAN);
//获取内容窗格
contentPane.setLayout(new BorderLayout());

最后也可将谢谢语句整合为自己可以常用的框架:
模式整合:正真可用框架

import java.awt.Container;
import java.awt.Color;
import java.awt.BorderLayout;
import javax.swing.JFrame;	
public class MyJframe{
	JFrame frame;
	Container contentPane; 
	public MyJframe(String frameName){
		frame = new JFrame(frameName);
		contentPane = frame.getContentPane(); 
		frame.setSize(600,400);
		//frame.setBackground(Color.CYAN);
		//contentPane.setLayout(new BorderLayout());
	}
	public  MyJframe(){
		this("no-name")
	}
	//·······
	//其他需要的功能
	//如果要显示框架,需加语句:frame.setVisible(true);
}

当使用此套路时,在添加组件时只需关注contentPane内容窗格就可以。


在一个容器中添加组件时,一定要注意容器的布局管理器。在练习阶段,一定要养成让框架程序正常结束的习惯,即:exit(0)

实际运用实例:
MyJframe类:

package com.text1;
import java.awt.Container;
import java.awt.Color;
import java.awt.BorderLayout;
import javax.swing.JFrame;

public class MyJframe{
    JFrame frame;
    Container contentPane;
    public MyJframe(String frameName){
        frame = new JFrame(frameName);
        contentPane = frame.getContentPane();
        frame.setSize(600,400);
        contentPane.setBackground(Color.magenta);
        contentPane.setLayout(new BorderLayout());
    }
    public  MyJframe(){
        this("no-name");
    }
    //·······
    //其他需要的功能
}

JframeDemo类:

package com.text1;
import java.util.Scanner;
public class JFrameDemo{
    public static void main(String[] args){
        JFrameDemo jFrameDemo = new JFrameDemo();
        jFrameDemo.useMyJframe("MyJfram text!");
    }
    public void useMyJframe(String string){
        MyJframe myJframe1 = new MyJframe(string);
        MyJframe myJframe2 = new MyJframe();
        myJframe2.contentPane.setBackground(Color.RED); //修改框架2的颜色为红色,原来的默认颜色为紫色。
        myJframe1.frame.setVisible(true);    //显示框架
        myJframe2.frame.setVisible(true);
        controlExit(); //输入字符串,回车之后程序退出。
    }

    public void controlExit(){
        Scanner reder = new Scanner(System.in);
        reder.next();
        reder.close();
        System.exit(0);
    }
}

运行结果截图如下:在run中回车突出程序
在这里插入图片描述
当然一个简单完整的图形用户几面还需要结合:组件,事件,布局管理,菜单栏,弹出窗口等知识。



下面介绍JFrame类的常用方法和属性:

类头

public class JFrame
extends Frame
implements WindowConstants,Accessible,RootPaneContainer

java.awt.Frame的扩展版本增加了对JFC / Swing组件架构的支持。
JFrame类与Frame略有不Frame 。

与Frame不同, JFrame有一些概念,当用户尝试关闭窗口时,如何响应。 默认行为是在用户关闭窗口时简单地隐藏JFrame。 要更改默认行为,您调用方法setDefaultCloseOperation(int)
要使JFrame与Frame实例相同,请使用setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE) 。

  • JFrame继承了Frame,所以,拥有的Frame类的一些方法和属性,这些方法不再此细述,想了解更多的可以点击:【Frame】java | Frame类及其关系类解析
  • JFrame还实现了众多接口,所以JFrame同时也具有更多的方法

JFrame的非继承属性
成员变量

Modifier and Type Field and Description
protected AccessibleContext accessibleContext 可访问的上下文属性。
static int EXIT_ON_CLOSE 退出应用程序默认窗口关闭操作
protected JRootPane rootPane JRootPane实例管理这个框架的 contentPane和可选的 menuBar ,以及 glassPane 。
protected boolean rootPaneCheckingEnabled 如果为真,那么 add和 setLayout将被转发到 contentPane 。

构造方法

方法 功能
JFrame() 构造一个最初不可见的新框架。
JFrame(GraphicsConfiguration gc) 在屏幕设备的指定 GraphicsConfiguration中创建一个 Frame和一个空白标题。
JFrame(String title) 创建一个新的,最初不可见的 Frame与指定的标题。
JFrame(String title, GraphicsConfiguration gc) 创建 JFrame具有指定标题和指定 GraphicsConfiguration屏幕设备的。

需要掌握的方法:
public String getTitle()获取框架的标题。 标题显示在框架的边框中。
public String setTitle()重置框架的标题。 标题显示在框架的边框中。

public void setIconImage(Image image) 将要显示的图像设置为此窗口的图标。

public MenuBar getMenuBar()获取此框架的菜单栏。
public void setMenuBar(MenuBar mb)将此框架的菜单栏设置为指定的菜单栏。

public boolean isResizable()指示该框架是否可由用户调整大小。 默认情况下,所有帧最初都可调整大小。 true表示可调整,f’alse表示不可调整。
public void setResizable(boolean resizable)设置该框架是否可以由用户调整大小。

public void setShape(Shape shape)设置窗口的形状。

public void setBackground(Color bgColor)设置此窗口的背景颜色。

public void remove(MenuComponent m)从此框架中删除指定的菜单栏。

public void setDefaultCloseOperation(int operation)设置用户在此框架上启动“关闭”时默认执行的操作。

  • operation = 0 ,表示关闭窗口不响应DO_NOTHING_ON_CLOSE
  • operation = 1,为默认值。HIDE_ON_CLOSE
  • operation = 2,DISPOSE_ON_CLOSE
  • operation = 3,表示关闭窗口并正常退出运用程序。EXIT_ON_CLOSE

public void remove(Component comp) 删除指定组件

public JRootPane getRootPane()返回此框架的 rootPane对象。

public Container getContentPane()返回此框架的 contentPane对象


注意:JFrame的主要方法是通过继承别的接口或者方法而来的,所以JFrame还有几百个方法。

JFrame模板

import java.awt.*;
import javax.swing.*;

public class MyJframe{
    JFrame frame;
    Container contentPane;
    public MyJframe(String frameName){
        //最基本的两条语句
        frame = new JFrame(frameName);
        contentPane = frame.getContentPane();

        //内容窗格,可选!
        contentPane.setBackground(Color.magenta);
        contentPane.setLayout(new BorderLayout());//和默认一样


        //最后的设置,可选!
        frame.setBounds(10, 10, 700, 800); //(x,y)表示窗口最左上方的位置,(w,h)表示宽高;
        frame.setResizable(false);  //设置是否可以改变窗口的大小,默认为true表示可以改变
        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);  //设置窗口关闭时的操作,此时为退出程序
        frame.setVisible(true); //显示窗口
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章