JGoodies binding - RiverLayout


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>

