2

Groovy でSwingBuilderと同様の方法で Swing ベースの GUI を作成できるライブラリはありますか?

Groovy やその他の完全なプログラミング言語を Java に埋め込まずに Java GUI アプリケーションを開発したいと思っていますが、標準の Java 構文はかなり面倒です。

4

2 に答える 2

1

ある時点でこの道をたどった後、MiGLayoutを見つけました。分割ペインを使用していない限り、通常、各ビューを 1 つのパネルにレイアウトすることができ、手間は最小限で済みます。習得には少し時間がかかりますが、一度こぶを乗り越えれば、本当に見栄えの良い GUI をすぐに使いこなすことができます。

他のパネル内にパネルをネストするというパラダイム全体は、多くのデザインにとってきれいではありません.レイアウトマネージャーと戦うことになります.

于 2010-10-26T04:00:47.927 に答える
1

私はそのようなライブラリを認識していませんが、同様のことが可能です (ただし、名前付きパラメーターがなくても可読性が低下します)。誰かが SwingBuilder を Java に変換した可能性があります。

[ http://kickjava.com/src/groovy/swing/SwingBuilder.java.htmで SwingBuilder の Java ソースを入手できるようです。それがどれほど最新のものかはわかりません]

プレーンなJavaで最も近いのは、「ダブルカーリートリック」を使用することです(これは実際にはトリックではなく、匿名の内部クラス定義にすぎません)。

参照ページの SwingBuilder の例:

new SwingBuilder().edt {
    frame(title:'Frame', size:[300,300], show: true) {
    borderLayout()
    textlabel = label(text:"Click the button!", constraints: BL.NORTH) 
    button(text:'Click Me',
           actionPerformed: {
               count++;
               textlabel.text = "Clicked  ${count} time(s).";
               println "clicked"},
               constraints:BL.SOUTH)
    }
}

Javaで次のように書くことができます

new JFrame() {{
    setTitle("Frame");
    setSize(300,300);
    setLayout(new BorderLayout());
    textlabel = new JLabel("Click the button!");
    add(textlabel, BorderLayout.NORTH);
    add(new JButton("Click Me") {{
        addActionListener(new ActionListener() {
            @Override public void actionPerformed(ActionEvent e) {
                count++;
                textlabel.setText("Clicked " + count + " time(s).");
                System.out.println("clicked");
        }});
    }}, BorderLayout.SOUTH);
    setVisible(true);
}};

注: ここでの問題は、

new SomeClass() {{ ... }}

実際には、新しいクラス定義を作成しています。このため、あまり頻繁に行うことはお勧めしません。

于 2010-10-25T21:29:21.817 に答える