初用 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吧。





评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值