In case any one else is interested, here is what I ended up with:
CardLayoutDemo.yaml:
JFrame:
- JComboBox(name=combo, onAction=onAction):
- SOmeTHing
- JPanel(name=cardpanel):
- JPanel(name=panel1):
- JButton(name=button1,text=Button 1)
- JButton(name=button2,text=Button 2)
- JButton(name=button3,text=Button 3)
- JPanel(name=panel2):
- JTextField(name=textField, text=Some Text)
- CardLayout(name=cards): [panel1,panel2]
- MigLayout: |
[grow]
combo
cardpanel
bind:
- combo.model: this.choices
CardLayoutDemo.java:
import java.awt.CardLayout;
import java.awt.event.ActionEvent;
import java.util.LinkedList;
import java.util.List;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import org.javabuilders.swing.SwingJavaBuilder;
@SuppressWarnings("serial")
public class CardLayoutDemo extends JFrame {
private List<String> choices = new LinkedList<String>();
private JPanel cardpanel;
private CardLayout cards;
public CardLayoutDemo() throws Exception {
choices.add("Card with JButtons");
choices.add("Card with JTextField");
SwingJavaBuilder.build(this);
}
public List<String> getChoices() {
return choices;
}
public void onAction(JComboBox box, ActionEvent event) {
if (cards != null)
switch(box.getSelectedIndex()) {
case 0:
cards.show(cardpanel, "panel1");
break;
case 1:
cards.show(cardpanel, "panel2");
break;
}
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
new CardLayoutDemo().setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});