Skip to content

Instantly share code, notes, and snippets.

@heuermh
Created February 7, 2014 21:56
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save heuermh/8872771 to your computer and use it in GitHub Desktop.
Save heuermh/8872771 to your computer and use it in GitHub Desktop.
import java.awt.*;
import java.util.*;
import javax.swing.*;
import javax.swing.border.*;
import javax.swing.event.*;
import oscP5.*;
public final class SwingSliderOsc extends JPanel implements Runnable {
public SwingSliderOsc() {
super();
setLayout(new BorderLayout());
setBorder(new EmptyBorder(20, 20, 20, 20));
// receive on port 6448, send on port 6449
final OscP5 oscP5 = new OscP5(this, 6448);
final JSlider slider = new JSlider(JSlider.VERTICAL, 0, 100, 0);
slider.setMajorTickSpacing(20);
slider.setMinorTickSpacing(5);
slider.setPaintLabels(true);
slider.setPaintTicks(true);
Hashtable labels = new Hashtable();
labels.put(20, createTickLabel("0.20"));
labels.put(40, createTickLabel("0.40"));
labels.put(60, createTickLabel("0.60"));
labels.put(80, createTickLabel("0.80"));
labels.put(100, createTickLabel("1.00"));
slider.setLabelTable(labels);
slider.addChangeListener(new ChangeListener() {
@Override
public void stateChanged(final ChangeEvent e) {
OscMessage message = new OscMessage("/value");
message.add(slider.getValue()/100.0);
oscP5.send(message, "localhost", 6449);
}
});
final JLabel currentValue = new JLabel("Current value: 0");
slider.addChangeListener(new ChangeListener() {
@Override
public void stateChanged(final ChangeEvent e) {
currentValue.setText("Current value: " + slider.getValue()/100.0);
}
});
add("North", new JLabel("Slider OSC send /value, f"));
add("Center", slider);
add("South", currentValue);
}
private static JLabel createTickLabel(final String value) {
JLabel label = new JLabel(value);
label.setFont(new Font("Dialog", Font.PLAIN, 11));
return label;
}
@Override
public void run() {
JFrame frame = new JFrame("Swing Slider OSC");
frame.setContentPane(this);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setBounds(100, 100, 200, 400);
frame.setVisible(true);
}
public static void main(final String[] args) {
SwingUtilities.invokeLater(new SwingSliderOsc());
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment