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
| public class DemoFormulaire extends JFrame {
public static void main(String[] args) {
SwingUtilities.invokeLater(()->new DemoFormulaire());
}
private Long x;
private Long y;
private JLabel labelX;
private JLabel labelY;
private JFrame formFrame;
public DemoFormulaire() {
super("Demo");
getContentPane().add(createPanel());
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pack();
setLocationRelativeTo(null);
setVisible(true);
}
private Component createPanel() {
JPanel panel = new JPanel();
panel.setLayout(new BorderLayout());
panel.add(createLabels(), BorderLayout.CENTER);
panel.add(createButtons(), BorderLayout.SOUTH);
return panel;
}
private Component createLabels() {
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(0, 2));
panel.add(new JLabel("X :"));
labelX = new JLabel();
panel.add(labelX);
panel.add(new JLabel("Y :"));
labelY = new JLabel();
panel.add(labelY);
return panel;
}
private void populateLabels() {
populateLabel(x, labelX);
populateLabel(y, labelY);
}
private void populateLabel(Long value, JLabel label) {
if ( value==null ) {
label.setText("");
}
else {
label.setText(String.valueOf(value));
}
}
private Component createButtons() {
JPanel panel = new JPanel();
panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
JButton buttonDialog = new JButton("Ouvre formulaire dans JDIalog");
panel.add(buttonDialog);
JButton buttonFrame = new JButton("Ouvre formulaire dans JFrame");
panel.add(buttonFrame);
buttonDialog.addActionListener((e) -> showFormDialog());
buttonFrame.addActionListener((e) -> showFormFrame());
return panel;
}
private void showFormDialog() {
if ( formFrame==null ) {
JDialog dialog = new JDialog(this, "Input fields", true);
createForm(dialog, dialog.getContentPane());
dialog.setVisible(true);
populateLabels();
}
}
private void showFormFrame() {
if ( formFrame==null ) {
formFrame = new JFrame("Input fields");
createForm(formFrame, formFrame.getContentPane());
formFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
formFrame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosed(WindowEvent e) {
populateLabels();
}
});
formFrame.setVisible(true);
}
}
private FormPanel createForm(Window window, Container pane) {
FormPanel form = new FormPanel(x, y);
pane.setLayout(new BorderLayout());
pane.add(form, BorderLayout.CENTER);
JButton buttonOk = new JButton("OK");
pane.add(buttonOk, BorderLayout.SOUTH);
buttonOk.addActionListener((e) -> closeAndSave(window, form) );
window.pack();;
window.setLocation(this.getX()+this.getWidth(), this.getY());
return form;
}
private void closeAndSave(Window window, FormPanel form) {
x = form.getFieldX();
y = form.getFieldY();
window.dispose();
}
private static class FormPanel extends JPanel {
private JFormattedTextField textX;
private JFormattedTextField textY;
public FormPanel(Long x, Long y) {
setLayout(new GridLayout(0, 2));
add(new JLabel("X :"));
textX = new JFormattedTextField(NumberFormat.getIntegerInstance());
add(textX);
if ( x!=null ) {
textX.setValue(x);
}
add(new JLabel("Y :"));
textY = new JFormattedTextField(NumberFormat.getIntegerInstance());
if ( y!=null ) {
textY.setValue(y);
}
add(textY);
}
public Long getFieldX() {
return (Long) textX.getValue();
}
public Long getFieldY() {
return (Long) textY.getValue();
}
}
} |
Partager