光りませんでした。単純に多くのコードを節約できます。不満を言うことはできますが、私が見た限りでは、そのようなテーブルの作成は、別個のモデル クラスや、メソッド宣言や注釈などの不要な行がたくさんあるよりも優れています。
table = builder.table(constraints: BorderLayout.CENTER) {
tableModel(list: data) {
propertyColumn(header:'Name', propertyName: 'displayName', editable: false)
closureColumn(header:'Value', read: IDENTITY,
cellRenderer: cellRenderer, cellEditor: cellEditor,
write: {row, newVal->});
} }
簡単なテーブル作成と非常に強力なclosureColumnに加えて、読みやすい簡単な例があります:
new SwingBuilder().frame(pack: true, show: true, defaultCloseOperation: JFrame.EXIT_ON_CLOSE) {
panel(layout: new BorderLayout()) {
label constraints: BorderLayout.PAGE_START, "Header"
button constraints: BorderLayout.PAGE_END,
action: action(name: "Footer", closure: { println "Footer pressed" }, accelerator: "Ctrl+K" )
list listData: 1..10, BorderLayout.CENTER
} }
それでは、答えてください。そのような結果を得るには、何行のコードを記述しますか?
編集: Groovy 非 SwingBuilder コードの 2 番目の例を追加しました。
def panel = new JPanel(new BorderLayout())
panel.add(new JLabel("Header"), BorderLayout.PAGE_START)
panel.add(new JList(*(1..10)), BorderLayout.CENTER)
def button = new JButton(new AbstractAction("Footer") {
{
putValue(ACCELERATOR_KEY, "Ctrl+K");
}
@Override void actionPerformed(ActionEvent actionEvent) {
println "Footer pressed"
}
})
panel.add(button, BorderLayout.PAGE_END)
def frame = new JFrame()
frame.defaultCloseOperation = JFrame.EXIT_ON_CLOSE
frame.contentPane = panel
frame.pack()
frame.visible = true