Я пишу приложение Griffon/Groovy/Swing. Тем не менее, мне нравится использовать инструменты WYSIWYG GUI, такие как инструмент Eclipe WindowBuilder.
Мне интересно, можно ли совместить два подхода? Я хотел бы использовать SwingBuilder
для управления привязкой представления/модели и некоторыми высокоуровневыми задачами графического интерфейса (такими как JDesktopPane
и JInternalFrame
), но иметь содержимое, разработанное в JFrame
, управляемое WindowBuilder.
Вот простой заводной скрипт:
package example
import groovy.swing.SwingBuilder
import java.awt.BorderLayout as BL
count = 0
new SwingBuilder().edt {
frame(title: 'Frame', size: [300, 300], show: true) {
desktopPane() {
internalFrame(visible: true, bounds: [25, 25, 200, 100]) {
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)
}
internalFrame(visible: true, bounds: [50, 50, 200, 100]).add(new ExamplePanel())
}
}
}
и это подкласс ExamplePanel JFrame:
package example;
import javax.swing.JPanel;
import java.awt.BorderLayout;
import javax.swing.JLabel;
import javax.swing.JButton;
public class ExamplePanel extends JPanel {
/**
* Create the panel.
*/
public ExamplePanel() {
setLayout(new BorderLayout(0, 0));
JLabel textLabel = new JLabel("Click the button!");
add(textLabel, BorderLayout.NORTH);
JButton button = new JButton("Click Me");
add(button, BorderLayout.SOUTH);
}
}
Сценарий groovy создает JDesktopPane
и два визуально идентичных JInternalFrame
. Второй JInternalFrame
содержит ExamplePanel
, но не имеет инфраструктуры для обнаружения нажатий кнопок или изменения содержимого метки.
Есть ли отличный способ получить то же поведение в ExamplePanel
, что и в SwingBuilder
, определенном internalFrame
?