Java Swing JFrame視窗的實現
阿新 • • 發佈:2020-01-07
1. 概述
官方JavaDocsApi: javax.swing.JFrame
JFrame,視窗。JFrame 是一個可以獨立顯示的元件,一個視窗通常包含有標題、圖示、操作按鈕(關閉、最小化、最大化),還可以為視窗新增選單欄、工具欄等。一個程序中可以建立多個視窗,並可在適當時候進行顯示、隱藏 或 銷燬。
JFrame 常用構造方法:
/** * 引數說明: * title: 視窗標題 */ JFrame() JFrame(String title)
JFrame 常用方法:
// 設定視窗的 標題 void setTitle(String title) // 設定視窗的 圖示 void setIconImage(Image image) // 設定視窗的 寬高 void setSize(int width,int height) void setSize(Dimension d) /** * 設定視窗關閉按鈕點選後的預設操作,參考值: * WindowConstants.DO_NOTHING_ON_CLOSE: 不執行任何操作。 * WindowConstants.HIDE_ON_CLOSE: 隱藏視窗(不會結束程序),再次呼叫 setVisible(true) 將再次顯示。 * WindowConstants.DISPOSE_ON_CLOSE: 銷燬視窗,如果所有可顯示的視窗都被 DISPOSE,則可能會自動結束程序。 * WindowConstants.EXIT_ON_CLOSE: 退出程序。 */ void setDefaultCloseOperation(int operation) // 設定視窗是否可放大縮小 void setResizable(boolean resizable) // 設定視窗的 位置(相對於螢幕左上角) void setLocation(int x,int y) void setLocation(Point p) // 設定視窗的 位置 和 寬高 void setBounds(int x,int y,int width,int height) void setBounds(Rectangle rect) // 獲取視窗的位置座標(相對於螢幕座標空間) Point getLocationOnScreen() // 獲取視窗的位置座標(相對於父級座標空間,視窗的父級一般就是螢幕) Point getLocation() /** * 設定視窗的相對位置。 * 如果 comp 整個顯示區域在螢幕內,則將視窗放置到 comp 的中心; * 如果 comp 顯示區域有部分不在螢幕內,則將該視窗放置在最接近 comp 中心的一側; * comp 為 null,表示將視窗放置到螢幕中心。 */ void setLocationRelativeTo(Component comp) // 設定將視窗 置頂 顯示 void setAlwaysOnTop(boolean alwaysOnTop) // 設定視窗的內容面板 void setContentPane(Container contentPane) // 設定視窗是否可見,視窗物件剛建立和新增相應元件後通過 setVisible(true) 繪製視窗,其內部元件可能要此時才有寬高值 void setVisible(boolean b) // 判斷視窗是否處於顯示狀態 boolean isShowing() // 銷燬視窗,釋放視窗及其所有子元件佔用的資源,之後再次呼叫 setVisible(true) 將會重構視窗 void dispose() // 調整視窗的大小,以適合其子元件的首選大小和佈局。 void pack()
2. 程式碼例項
package com.xiets.swing; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class Main { public static void main(String[] args) { final JFrame jf = new JFrame("測試視窗"); jf.setSize(400,400); jf.setLocationRelativeTo(null); jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); JPanel panel = new JPanel(); JButton btn = new JButton("Show New Window"); btn.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // 點選按鈕,顯示新的一個視窗 showNewWindow(jf); } }); panel.add(btn); jf.setContentPane(panel); jf.setVisible(true); } public static void showNewWindow(JFrame relativeWindow) { // 建立一個新視窗 JFrame newJFrame = new JFrame("新的視窗"); newJFrame.setSize(250,250); // 把新視窗的位置設定到 relativeWindow 視窗的中心 newJFrame.setLocationRelativeTo(relativeWindow); // 點選視窗關閉按鈕,執行銷燬視窗操作(如果設定為 EXIT_ON_CLOSE,則點選新視窗關閉按鈕後,整個程序將結束) newJFrame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); // 視窗設定為不可改變大小 newJFrame.setResizable(false); JPanel panel = new JPanel(new GridLayout(1,1)); // 在新視窗中顯示一個標籤 JLabel label = new JLabel("這是一個視窗"); label.setFont(new Font(null,Font.PLAIN,25)); label.setHorizontalAlignment(SwingConstants.CENTER); label.setVerticalAlignment(SwingConstants.CENTER); panel.add(label); newJFrame.setContentPane(panel); newJFrame.setVisible(true); } }
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。