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
| public class DemoSlider extends JPanel {
private int value1;
private int value2;
public DemoSlider() {
setPreferredSize(new Dimension(600,400));
value1 = 200;
value2 = 200;
}
public void setValue1(int value) {
this.value1=convert(value);
repaint();
}
public void setValue2(int value) {
this.value2=convert(value);
repaint();
}
private int convert(int value) {
return 400-Math.min(Math.max(value,0),400);
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.BLACK);
g.drawLine(100, value1, 500, value2);
drawPoint(g, 100, value1, Color.GREEN);
drawPoint(g, 500, value2, Color.RED);
}
private void drawPoint(Graphics g, int x, int y, Color color) {
g.setColor(color);
g.fillOval(x-3, y-3, 6, 6);
}
public static void main(String[] args) {
JFrame frame = new JFrame("Démo");
DemoSlider demo = new DemoSlider();
frame.add(demo);
JPanel sliderPanel = new JPanel();
sliderPanel.setLayout(new BoxLayout(sliderPanel, BoxLayout.Y_AXIS));
frame.add(sliderPanel, BorderLayout.SOUTH);
JSlider slider1 = new JSlider(JSlider.HORIZONTAL, 0, 400, 200);
JSlider slider2 = new JSlider(JSlider.HORIZONTAL, 0, 400, 200);
sliderPanel.add(slider1);
sliderPanel.add(slider2);
slider1.addChangeListener(e-> change(slider1, v-> demo.setValue1(v)));
slider2.addChangeListener(e-> change(slider2, v-> demo.setValue2(v)));
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
private static void change(JSlider slider, Consumer<Integer> action) {
int value = slider.getValue();
action.accept(value);
}
} |
Partager