【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); //顯示窗口
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章