Swing JFrame類

2019-10-16 22:10:05

JFrame類是java.awt.Frame的擴充套件版本,它增加了對JFC/Swing元件體系結構的支援。

類宣告

以下是javax.swing.JFrame類的宣告 -

public class JFrame
   extends Frame
      implements WindowConstants, Accessible, RootPaneContainer

欄位

以下是java.awt.Component類的欄位 -

  • protected AccessibleContext accessibleContext - 可存取的上下文屬性。
  • static int EXIT_ON_CLOSE - 退出應用程式預設視窗關閉操作。
  • protected JRootPane rootPane - 管理此框架的contentPane和可選menuBarJRootPane範例。
  • protected boolean rootPaneCheckingEnabled - 如果為true,則對addsetLayout方法的呼叫將轉發到contentPane

類建構函式

編號 類建構函式 說明
1 JFrame() 構造一個最初不可見的新框架。
2 JFrame(GraphicsConfiguration gc)
3 JFrame(String title) 使用指定的標題建立一個新的,最初不可見的Frame
4 JFrame(String title, GraphicsConfiguration gc) 使用指定的標題和螢幕裝置的指定GraphicsConfiguration建立JFrame

類方法

編號 類方法
1 protected void addImpl(Component comp, Object constraints, int index) 新增指定的子元件。
2 protected JRootPane createRootPane() 由建構函式方法呼叫以建立預設的rootPane
3 protected void frameInit() 由建構函式呼叫以正確初始化JFrame
4 AccessibleContext getAccessibleContext() 獲取與此JFrame關聯的AccessibleContext。
5 Container getContentPane() 返回此JFramecontentPane物件。
6 int getDefaultCloseOperation() 返回使用者在此JFrame上啟動「關閉」時發生的操作。
7 Component getGlassPane() 返回此JFrameglassPane物件。
8 Graphics getGraphics() 為此元件建立圖形上下文。
9 JMenuBar getJMenuBar() 返回此JFrame上設定的選單欄。
10 JLayeredPane getLayeredPane() 返回此JFramelayeredPane物件。
11 JRootPane getRootPane() 返回此JFramerootPane物件。
12 TransferHandler getTransferHandler() 獲取transferHandler屬性。
13 static boolean isDefaultLookAndFeelDecorated() 如果新建立的JFrame具有由當前外觀提供的Window裝飾,則返回true
14 protected boolean isRootPaneCheckingEnabled() 返回對addsetLayout的呼叫是否轉發到contentPane
15 protected String paramString() 返回此JFrame的字串表示形式。
16 protected void processWindowEvent(WindowEvent e) 處理在此元件上發生的視窗事件。
17 void remove(Component comp) 從容器中刪除指定的元件。
18 void repaint(long time, int x, int y, int width, int height) 在時間毫秒內重新繪製此元件的指定矩形。
19 void setContentPane(Container contentPane) 設定contentPane屬性。
20 void setDefaultCloseOperation(int operation) 設定當使用者在此JFrame上啟動「關閉」時預設發生的操作。
21 static void setDefaultLookAndFeelDecorated(boolean defaultLookAndFeelDecorated) 提供關於新建立的JFrame是否應具有由當前外觀提供的Window裝飾(例如邊框,關閉視窗的小部件,標題…)的提示。
22 void setGlassPane(Component glassPane) 設定glassPane屬性。
23 void setIconImage(Image image) 設定要顯示為此視窗圖示的影象。
24 void setJMenuBar(JMenuBar menubar) 設定此JFrame的選單欄。
25 void setLayeredPane(JLayeredPane layeredPane) 設定layeredPane屬性。
26 void setLayout(LayoutManager manager) 設定LayoutManager
27 protected void setRootPane(JRootPane root) 設定rootPane屬性。
28 protected void setRootPaneCheckingEnabled(boolean enabled) 設定是否將對addsetLayout的呼叫轉發到contentPane
29 void setTransferHandler(TransferHandler newHandler) 設定transferHandler屬性,該屬性是一種支援將資料傳輸到此元件的機制。
30 void update(Graphics g) 只需要呼叫paint(g)

方法繼承

該類繼承以下類中的方法 -

  • java.awt.Frame
  • java.awt.Window
  • java.awt.Container
  • java.awt.Component
  • java.lang.Object

JFrame範例

使用編輯器建立以下Java程式:JFrameDemo.java

package com.yiibai.menu;


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

public class JFrameDemo {
   private JFrame mainFrame;
   private JLabel headerLabel;
   private JLabel statusLabel;
   private JPanel controlPanel;
   private JLabel msglabel;

   public JFrameDemo(){
      prepareGUI();
   }
   public static void main(String[] args){
       JFrameDemo  swingContainerDemo = new JFrameDemo();  
      swingContainerDemo.showJFrameDemo();
   }
   private void prepareGUI(){
      mainFrame = new JFrame("Java Swing JFrameDemo(範例)");
      mainFrame.setSize(400,400);
      mainFrame.setLayout(new GridLayout(3, 1));

      mainFrame.addWindowListener(new WindowAdapter() {
         public void windowClosing(WindowEvent windowEvent){
            System.exit(0);
         }        
      });    
      headerLabel = new JLabel("", JLabel.CENTER);        
      statusLabel = new JLabel("",JLabel.CENTER);    
      statusLabel.setSize(350,100);
      msglabel = new JLabel("歡迎您來到易百教學~", JLabel.CENTER);

      controlPanel = new JPanel();
      controlPanel.setLayout(new FlowLayout());

      mainFrame.add(headerLabel);
      mainFrame.add(controlPanel);
      mainFrame.add(statusLabel);
      mainFrame.setVisible(true);  
   }
   private void showJFrameDemo(){
      headerLabel.setText("Container in action: JFrame");   
      final JFrame frame = new JFrame();
      frame.setSize(300, 300);
      frame.setLayout(new FlowLayout());       
      frame.add(msglabel);

      frame.addWindowListener(new WindowAdapter() {
         public void windowClosing(WindowEvent windowEvent){
            frame.dispose();
         }        
      });    
      JButton okButton = new JButton("開啟Frame");
      okButton.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent e) {
            statusLabel.setText("A Frame shown to the user.");
            frame.setVisible(true);
         }
      });
      controlPanel.add(okButton);
      mainFrame.setVisible(true);  
   }
}

執行上面範例程式碼,得到以下結果:

JFrame