Я делаю график с помощью eclipse и построителя окон, который получает математическое выражение от пользователя (например, ADD(MUL(X,Y),Z)) и в какой-то момент просит пользователя указать одну из его переменных как time . затем пользователю будет предложено выбрать начальную точку и диапазон этой переменной. затем программа покажет фрейм (и панель) с jslider и кнопкой воспроизведения. Когда пользователь нажимает кнопку, программа должна начать рисовать выражение. Он должен выглядеть как График Gapminder .
Я проверил другие вопросы об обновлении jsliders, но обычно они касаются ползунка музыкального проигрывателя или ползунка, который просто меняется со временем (без графической части).
мой вопрос конкретно об обновлении ползунка (интервалы могут быть 1), но было бы здорово, если бы вы также могли указать, как мне сделать этот воспроизводимый ползунок, чтобы его также можно было использовать для графической части.
этот код на данный момент:
package progGUI;
import java.awt.BorderLayout;
public class CanvasFrame extends JFrame {
private JPanel contentPane;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
CanvasFrame frame = new CanvasFrame();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public CanvasFrame() {
setTitle("Graph");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 700, 542);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
JSlider slider = new JSlider();
slider.setPaintLabels(true);
slider.setMinorTickSpacing(1);
slider.setMajorTickSpacing(5);
slider.setPaintTicks(true);
JLabel lblEnteredExpression = new JLabel("Entered Expression");
JLabel lblVaraibles = new JLabel("Variables");
JFormattedTextField formattedTextField = new JFormattedTextField();
JFormattedTextField formattedTextField_1 = new JFormattedTextField();
JPanel panel = new JPanel();
panel.setBackground(Color.WHITE);
JButton btnNewButton = new JButton("Play");
GroupLayout gl_contentPane = new GroupLayout(contentPane);
gl_contentPane.setHorizontalGroup(
gl_contentPane.createParallelGroup(Alignment.LEADING)
.addGroup(gl_contentPane.createSequentialGroup()
.addContainerGap()
.addGroup(gl_contentPane.createParallelGroup(Alignment.LEADING)
.addGroup(gl_contentPane.createSequentialGroup()
.addComponent(panel, GroupLayout.PREFERRED_SIZE, 453, GroupLayout.PREFERRED_SIZE)
.addPreferredGap(ComponentPlacement.RELATED, 51, Short.MAX_VALUE)
.addGroup(gl_contentPane.createParallelGroup(Alignment.LEADING)
.addComponent(lblEnteredExpression, Alignment.TRAILING)
.addComponent(lblVaraibles)
.addComponent(formattedTextField, GroupLayout.PREFERRED_SIZE, 119, GroupLayout.PREFERRED_SIZE)
.addComponent(formattedTextField_1, GroupLayout.PREFERRED_SIZE, 123, GroupLayout.PREFERRED_SIZE))
.addGap(57))
.addGroup(gl_contentPane.createSequentialGroup()
.addComponent(btnNewButton, GroupLayout.PREFERRED_SIZE, 87, GroupLayout.PREFERRED_SIZE)
.addPreferredGap(ComponentPlacement.RELATED)
.addComponent(slider, GroupLayout.PREFERRED_SIZE, 454, GroupLayout.PREFERRED_SIZE)
.addContainerGap())))
);
gl_contentPane.setVerticalGroup(
gl_contentPane.createParallelGroup(Alignment.TRAILING)
.addGroup(gl_contentPane.createSequentialGroup()
.addGap(18)
.addGroup(gl_contentPane.createParallelGroup(Alignment.LEADING)
.addGroup(gl_contentPane.createSequentialGroup()
.addComponent(lblEnteredExpression)
.addPreferredGap(ComponentPlacement.RELATED)
.addComponent(formattedTextField_1, GroupLayout.PREFERRED_SIZE, 22, GroupLayout.PREFERRED_SIZE)
.addPreferredGap(ComponentPlacement.UNRELATED)
.addComponent(lblVaraibles)
.addPreferredGap(ComponentPlacement.RELATED)
.addComponent(formattedTextField, GroupLayout.PREFERRED_SIZE, 20, GroupLayout.PREFERRED_SIZE))
.addComponent(panel, GroupLayout.PREFERRED_SIZE, 350, GroupLayout.PREFERRED_SIZE))
.addGroup(gl_contentPane.createParallelGroup(Alignment.LEADING)
.addGroup(gl_contentPane.createSequentialGroup()
.addGap(31)
.addComponent(btnNewButton))
.addGroup(gl_contentPane.createSequentialGroup()
.addGap(18)
.addComponent(slider, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)))
.addGap(402))
);
contentPane.setLayout(gl_contentPane);
}
}
JSlider
управлять тем, что отображается на графике, используйте SwingTimer
для периодического обновленияJSlider
- person MadProgrammer   schedule 12.02.2015