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
| import java.awt.Component;
import java.awt.event.WindowAdapter;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import javax.swing.DefaultListCellRenderer;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
public class Demo {
public static void main(String[] args) {
JFrame frame = new JFrame("Démo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// la liste des choix
LocalTime[] times = {
LocalTime.of(5, 30),
LocalTime.of(11, 30),
LocalTime.of(12, 45), // une heure sans association
LocalTime.of(14, 00),
LocalTime.of(16, 30),
LocalTime.of(19, 30),
LocalTime.of(21, 45),
null
};
JList<LocalTime> list = new JList<>(times);
list.setCellRenderer(new DefaultListCellRenderer() {
@Override
public Component getListCellRendererComponent(JList<?> list, Object value, int index, boolean isSelected,
boolean cellHasFocus) {
if ( value instanceof LocalTime ) {
value = ((LocalTime)value).format(DateTimeFormatter.ofPattern("HH:mm"));
}
else {
value = "Default";
}
return super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
}
});
list.setSelectedIndex(times.length-1);
// ici on écoute les changements de sélection
list.addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {
if ( !e.getValueIsAdjusting() ) {
// on appelle setTime avec la valeur sélectionnée dans la liste
Planning.setTime(list.getSelectedValue());
}
}
});
frame.add(list);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
frame.addWindowListener( new WindowAdapter() {
public void windowClosed(java.awt.event.WindowEvent e) {
Planning.stop();
}
});
Planning.start();
}
} |
Partager