45 lines
1.2 KiB
Java
45 lines
1.2 KiB
Java
package io.swtc.proccessing.ui;
|
|
|
|
import javax.swing.*;
|
|
import javax.swing.border.EmptyBorder;
|
|
import java.awt.*;
|
|
|
|
public class LabeledSlider extends JPanel {
|
|
private final JSlider slider;
|
|
private final JLabel label;
|
|
private final String title;
|
|
private final String unit;
|
|
|
|
public LabeledSlider(String title, int min, int max, int value, String unit) {
|
|
this.title = title;
|
|
this.unit = unit;
|
|
setLayout(new BorderLayout());
|
|
|
|
label = new JLabel(title + ": " + value + unit);
|
|
slider = new JSlider(min, max, value);
|
|
|
|
// Internal listener to update the text label as user drags
|
|
slider.addChangeListener(e -> updateLabel());
|
|
|
|
add(label, BorderLayout.NORTH);
|
|
add(slider, BorderLayout.CENTER);
|
|
setBorder(new EmptyBorder(5, 0, 5, 0));
|
|
}
|
|
|
|
private void updateLabel() {
|
|
label.setText(title + ": " + slider.getValue() + unit);
|
|
}
|
|
|
|
public int getValue() { return slider.getValue(); }
|
|
|
|
public void setValue(int val) {
|
|
slider.setValue(val);
|
|
updateLabel();
|
|
}
|
|
|
|
public JSlider getSlider() { return slider; }
|
|
|
|
public void addChangeListener(javax.swing.event.ChangeListener cl) {
|
|
slider.addChangeListener(cl);
|
|
}
|
|
} |