A working example: JGoodies binding - RiverLayout
1: Registration.java
package formbeans;
import java.awt.Container; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.beans.PropertyChangeListener;
import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JSplitPane; import javax.swing.JTextArea; import javax.swing.JTextField; import javax.swing.border.EmptyBorder;
import se.datadosen.component.RiverLayout;
import com.jgoodies.binding.adapter.BasicComponentFactory; import com.jgoodies.binding.beans.BeanAdapter; import com.jgoodies.binding.beans.ExtendedPropertyChangeSupport; import com.jgoodies.binding.value.ValueModel; import com.jgoodies.forms.factories.Borders;
public class Registration {
String username, age, comment; private String CMD_OK = "cmd.ok"/* NOI18N */; private JButton okButton, ok1Button, ok2Button; private ExtendedPropertyChangeSupport changeSupport = new ExtendedPropertyChangeSupport( this);
public String getUsername() { return username; }
public void setUsername(String username) { String oldValue = username; this.username = username; changeSupport.firePropertyChange("stringValue", oldValue, username); System.out.println(username); }
public String getAge() { return age; }
public void setAge(String age) { String oldValue = age; this.age = age; changeSupport.firePropertyChange("stringValue", oldValue, age); System.out.println(age); }
public String getComment() { return comment; }
public void setComment(String comment) { String oldValue = comment; this.comment = comment; changeSupport.firePropertyChange("stringValue", oldValue, comment); System.out.println(comment); }
public void addPropertyChangeListener(PropertyChangeListener x) { changeSupport.addPropertyChangeListener(x); }
public void removePropertyChangeListener(PropertyChangeListener x) { changeSupport.removePropertyChangeListener(x); }
public Container formRiverLayout(JFrame f) { okButton = new JButton(); okButton.setText("ok"); okButton.setActionCommand(CMD_OK); okButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { // windowAction(event); System.out.println("ACTION : BUTTON OK WAS CLICKED"); System.out.println(okButton.getActionCommand()); } });
ok1Button = new JButton(); ok1Button.setText("ok 1"); ok1Button.setActionCommand(CMD_OK); ok1Button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { // windowAction(event); System.out.println("ACTION : BUTTON 1 OK WAS CLICKED"); System.out.println(ok1Button.getActionCommand()); } });
ok2Button = new JButton(); // we'll need this soon ok2Button.setText("ok 2"); ok2Button.setActionCommand(CMD_OK); ok2Button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { // windowAction(event); System.out.println("ACTION : BUTTON 2 OK WAS CLICKED"); System.out.println(ok2Button.getActionCommand()); } });
Registration bean = new Registration(); BeanAdapter adapter = new BeanAdapter(bean, true);
ValueModel nameModel = adapter.getValueModel("username"); ValueModel ageModel = adapter.getValueModel("age"); ValueModel commentModel = adapter.getValueModel("comment");
JTextField userinput = BasicComponentFactory.createTextField(nameModel); JTextField ageinput = BasicComponentFactory.createTextField(ageModel); JTextArea commentinput = BasicComponentFactory .createTextArea(commentModel);
ValueModel nameModel01 = adapter.getValueModel("username"); ValueModel ageModel01 = adapter.getValueModel("age"); ValueModel commentModel01 = adapter.getValueModel("comment");
JTextField userinput01 = BasicComponentFactory .createTextField(nameModel01); JTextField ageinput01 = BasicComponentFactory .createTextField(ageModel01); JTextArea commentinput01 = BasicComponentFactory .createTextArea(commentModel01);
ValueModel nameModel02 = adapter.getValueModel("username"); ValueModel ageModel02 = adapter.getValueModel("age"); ValueModel commentModel02 = adapter.getValueModel("comment");
JTextField userinput02 = BasicComponentFactory .createTextField(nameModel02); JTextField ageinput02 = BasicComponentFactory .createTextField(ageModel02); JTextArea commentinput02 = BasicComponentFactory .createTextArea(commentModel02);
// Panel 1 = left + center
// left JPanel left = new JPanel(); left.setLayout(new RiverLayout()); left.add("right", new JLabel("Registration form left")); left.add("p left", new JLabel("Name")); left.add("tab hfill", userinput); left.add("br", new JLabel("Age")); ageinput.setColumns(5); left.add("tab", ageinput); left.add("br vtop", new JLabel("Comment")); commentinput.setRows(3); left.add("tab hfill vfill", new JScrollPane(commentinput)); left.add("p right", okButton); // added to level the content of the 3 panels left.setBorder(Borders.DIALOG_BORDER);
// center JPanel center = new JPanel(); center.setLayout(new RiverLayout()); center.add("right", new JLabel("Registration form center")); center.add("p left", new JLabel("Name-center")); center.add("tab hfill", userinput01); center.add("br", new JLabel("Age-center")); ageinput01.setColumns(2); center.add("tab", ageinput01); center.add("br vtop", new JLabel("Comment-center")); center.add("tab hfill vfill", new JScrollPane(commentinput01)); center.add("p right", ok1Button); center.add(left); // added to level the content of the 3 panels center.setBorder(Borders.DIALOG_BORDER);
JSplitPane splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, left, center); JPanel panel1 = new JPanel(); panel1.setLayout(new RiverLayout()); splitPane.setBorder(new EmptyBorder(-10, -5, -20, -8)); //splitPane.setDividerLocation(150); //splitPane.setOneTouchExpandable(true); splitPane.setDividerSize(3); panel1.add("hfill vfill", splitPane);
JPanel right = new JPanel(); right.setLayout(new RiverLayout()); right.add("right", new JLabel("Registration form right")); right.add("p left", new JLabel("Name-right")); right.add("tab hfill", userinput02); right.add("br", new JLabel("Age-right")); ageinput02.setColumns(3); right.add("tab", ageinput02); right.add("br vtop", new JLabel("Comment-right")); right.add("tab hfill vfill", new JScrollPane(commentinput02)); right.add("p right", ok2Button); // added to level the content of the 3 panels right.setBorder(new EmptyBorder(6, 0, 6, 0));
JSplitPane splitPane0 = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, panel1, right);
splitPane0.setBorder(new EmptyBorder(-4, 0, -10, 0)); splitPane0.setDividerSize(3);
Container c = f.getContentPane();
c.add(splitPane0); // to add a gray border change the code to : // c.setBackground(Color.GRAY); // c.setLayout(new RiverLayout()); // c.add("hfill vfill",splitPane0); return c; } }
2.BuildRegistration.java
package formbuilding;
import javax.swing.JFrame; import formbeans.Registration;
public class BuildRegistration {
public BuildRegistration(String title) { JFrame f = new JFrame(title);
Registration r = new Registration(); f.setLocation(200, 200); r.formRiverLayout(f); f.pack(); f.setVisible(true);
}
public static void main(String[] args) { BuildRegistration br = new BuildRegistration("Registration");
}
}
<hr> <pre><font face="Arial">Tags : RiverLaout , sample , java , example , jgoodies , valuemodel</font></pre><hr>
|