初用 intelliJ 的GUI Form

在用了一年的eclipse和myeclipse後,偶然在小學期課設中接觸到了JetBrains 的 intelliJ ,如此便一發不可收拾地愛上了這一系列的IDE。剛好我也是web開發迷,其他幾款如:webstorm和phpstorm正對我胃口。

閒話少說,在使用上intelliJ之後不久,終於遇到了需要畫界面的需求。於是接觸到了intelliJ的GUI Form


新建一個GUI Form :


注意勾選 create bound class ,意思就是 創建一個邊界類,邊界類幹啥用的呢?

填好Form name,後點擊OK(Class name自動填充和Form name相同的名字)

得到這樣兩個文件:


form文件根據官網的說法是這樣的:

這是鏈接


也就是說form是一個基於XML的文件,這麼設計的目的是爲了擺脫複雜的Swing代碼,intelliJ編譯器會透明地自動生成必要的代碼來創建和佈局所有的控件。這樣的設計封裝得很徹底,好處和壞處都有。。。

然後接下來我們可以看到form的界面就是一個設計界面,和其他swing插件基本類似。


而邊界類中什麼都沒有


然而在form中創建的所有控件在更改了field name之後都會在邊界類中創建相關屬性(變量)


注意,所有的控件一定都要設定field name,否則在自動生成main函數時會出錯!!!


添加幾個控件之後:



OK,下面自動生成main函數

使用快捷鍵 alt+insert -> 或者右鍵在java類中單擊->點擊generate

然後點擊最後一項


這是最後的代碼:

import javax.swing.*;

public class NewForm {
    private JTextField textFieldA;
    private JPanel wrapPanel;
    private JLabel labelA;

    public static void main(String[] args) {
        JFrame frame = new JFrame("NewForm");
        frame.setContentPane(new NewForm().wrapPanel);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.pack();
        frame.setVisible(true);
    }
}
可以看出來,main函數中是新建了一個JFrame的

關注這一句:

frame.setContentPane(new NewForm().wrapPanel);

於是有點明白了,

爲什麼創建form時必然自動創建了一個panel,panel相當於根節點,當初始化這個類的時候,自動通過form文件中的內容裝載了所有控件,並將根節點jpanel填充到新建的Jframe中顯示出來就行了

在其他類中也可以引用這個jpanel,像這樣:

                JPanel pa = new NewForm().getWrapPanel();
                panelField.setLayout(new GridLayout());
                panelField.add(pa);
                panelField.validate();
                panelField.repaint();
當然,被引用類需要提供get方法。


以上就是一些基礎的知識,具體使用、佈局等參考Swing相關api吧。





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章