1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202
| public class CopyPanelDemo extends JPanel {
private JTextField field1;
private JTextField field2;
private JTextField field3;
public CopyPanelDemo() {
super(new GridBagLayout());
field1 = createField(0,"Field 1", randomData());
field2 = createField(1,"Field 2", randomData());
field3 = createField(2,"Field 3", randomData());
}
public void setData1(String text) {
if (text!=null) {
field1.setText(text);
}
}
public String getData1() {
return field1.getText();
}
public void setData2(String text) {
if (text!=null) {
field2.setText(text);
}
}
public String getData2() {
return field2.getText();
}
public void setData3(String text) {
if (text!=null) {
field3.setText(text);
}
}
public String getData3() {
return field3.getText();
}
public DataModel getData() {
DataModel dataModel = new DataModel();
dataModel.setData1(getData1());
dataModel.setData2(getData2());
dataModel.setData3(getData3());
return dataModel;
}
public void setData(DataModel data) {
if (data!=null) {
setData1(data.getData1());
setData2(data.getData2());
setData3(data.getData3());
}
}
public void reset() {
setData1(randomData());
setData2(randomData());
setData3(randomData());
}
private JTextField createField(int row, String name, String data) {
JLabel label = new JLabel(name);
add(label, new GridBagConstraints(0, row, 1, 1, 0, 0, GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(2,2,2,2), 0, 0));
JTextField field = new JTextField(data);
add(field, new GridBagConstraints(1, row, 1, 1, 1, 0, GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets(2,2,2,2), 0, 0));
return field;
}
private final Random random = new Random();
private final static String BASE = "BATACAPODOMOTUTITEBIRINIMILEMERE";
private String randomData() {
if (random.nextDouble()<0.1) return "";
StringBuilder sb = new StringBuilder();
for( int i=2+random.nextInt(2); i>=0 ; i--) {
int j = random.nextInt(BASE.length()/2);
sb.append(BASE.substring(j*2, j*2+2));
}
return sb.toString();
}
public static void main(String[] args) {
JFrame frame = new JFrame("Démo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(new GridLayout(0, 2));
final CopyPanelDemo leftFieldPanel = new CopyPanelDemo();
final CopyPanelDemo rightFieldPanel = new CopyPanelDemo();
JPanel leftPanel = new JPanel(new BorderLayout());
leftPanel.add( leftFieldPanel );
JPanel rightPanel = new JPanel(new BorderLayout());
rightPanel.add( rightFieldPanel );
JButton leftResetButton = new JButton("Reset");
leftPanel.add( leftResetButton, BorderLayout.NORTH);
leftResetButton.addActionListener( new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
leftFieldPanel.reset();
}
} );
JButton leftButton = new JButton("Copie par champs >>");
leftPanel.add( leftButton, BorderLayout.SOUTH);
leftButton.addActionListener( new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
copieParChamp(leftFieldPanel, rightFieldPanel);
}
} );
JButton rightResetButton = new JButton("Reset");
rightPanel.add( rightResetButton, BorderLayout.NORTH);
rightResetButton.addActionListener( new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
rightFieldPanel.reset();
}
} );
JButton rightButton = new JButton("<< Copie par modèle");
rightPanel.add( rightButton, BorderLayout.SOUTH);
rightButton.addActionListener( new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
copieParModel(rightFieldPanel, leftFieldPanel);
}
} );
frame.add(leftPanel);
frame.add(rightPanel);
frame.setSize(400, 300);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
public static void copieParChamp(CopyPanelDemo source,
CopyPanelDemo target) {
target.setData1( source.getData1() );
target.setData2( source.getData2() );
target.setData3( source.getData3() );
}
public static void copieParModel(CopyPanelDemo source,
CopyPanelDemo target) {
target.setData( source.getData() );
}
public static class DataModel {
private String data1;
private String data2;
private String data3;
public void setData1(String text) {
data1=text;
}
public String getData1() {
return data1;
}
public void setData2(String text) {
data2=text;
}
public String getData2() {
return data2;
}
public void setData3(String text) {
data3=text;
}
public String getData3() {
return data3;
}
}
} |