Using Java how do i do create a JSlider that does the following? (Sliders and a
ID: 3776703 • Letter: U
Question
Using Java how do i do create a JSlider that does the following?
(Sliders and a label) The user has 100 skill points to spend across 4 different passive skills. The user will see a label with “100” on it originally.
Whenever he/she slides a slider to increase the skill points in that skill, the points are taken from the 100 points (or however many are remaining.)
When the user decreases the skill points in a particular area, they are returned to the “points left to spend” pool, and this is reflected in the label as well. The remaining points will always be displayed in this label.
If the player runs out of points to spend, he/she should not be able to increase the points in any skill area until points are returned to the pool, and are available to be spent
The four (4) skill areas are as follows:
Intelligence, Dexterity, Strength, and Wisdom
Explanation / Answer
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.plaf.SliderUI;
public class Skills {
private JFrame mainFrame;
private JLabel headerLabel;
private JLabel statusLabel;
private JPanel controlPanel;
public int value1;
public int value2;
public int value3;
public int value4;
public Skills(){
prepareGUI();
}
public static void main(String[] args) throws Exception{
Skills swingControlDemo = new Skills();
swingControlDemo.showSliderDemo();
}
private void prepareGUI(){
mainFrame = new JFrame("Java Swing Examples");
mainFrame.setSize(1000,1000);
mainFrame.setLayout(new GridLayout(3, 1));
mainFrame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent windowEvent){
System.exit(0);
}
});
headerLabel = new JLabel("", JLabel.CENTER);
statusLabel = new JLabel("",JLabel.CENTER);
statusLabel.setSize(350,100);
controlPanel = new JPanel();
controlPanel.setLayout(new FlowLayout());
mainFrame.add(headerLabel);
mainFrame.add(controlPanel);
mainFrame.add(statusLabel);
mainFrame.setVisible(true);
}
private void showSliderDemo() throws Exception{
controlPanel.setLayout(new BoxLayout(controlPanel, BoxLayout.Y_AXIS));
JPanel jPanel=new JPanel(new FlowLayout());
JLabel jLabel=new JLabel("Intelligence");
JSlider slider= new JSlider(JSlider.HORIZONTAL,0,100,0);
slider.setMinorTickSpacing(1);
slider.setMajorTickSpacing(10);
slider.setPaintTicks(true);
slider.setPaintLabels(true);
slider.setLabelTable(slider.createStandardLabels(10));
slider.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
if((value1+value2+value3+value4)>100){
slider.setValue(100-(value2+value3+value4));
}
value1=((JSlider)e.getSource()).getValue();
statusLabel.setText("points left to spend : "+(100-(value1+value2+value3+value4)) );
}
});
jPanel.add(jLabel);
jPanel.add(slider);
JPanel jPanel1=new JPanel(new FlowLayout());
JLabel jLabel1=new JLabel("Dexterity");
JSlider slider1= new JSlider(JSlider.HORIZONTAL,0,100,0);
slider1.setMinorTickSpacing(1);
slider1.setMajorTickSpacing(10);
slider1.setPaintTicks(true);
slider1.setPaintLabels(true);
slider1.setLabelTable(slider1.createStandardLabels(10));
slider1.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
if((value1+value2+value3+value4)>100){
slider1.setValue(100-(value1+value3+value4));
}
value2=((JSlider)e.getSource()).getValue();
statusLabel.setText("points left to spend : "+(100-(value1+value2+value3+value4)) );
}
});
jPanel1.add(jLabel1);
jPanel1.add(slider1);
JPanel jPanel2=new JPanel(new FlowLayout());
JLabel jLabel2=new JLabel("Strength");
JSlider slider2= new JSlider(JSlider.HORIZONTAL,0,100,0);
slider2.setMinorTickSpacing(1);
slider2.setMajorTickSpacing(10);
slider2.setPaintTicks(true);
slider2.setPaintLabels(true);
slider2.setLabelTable(slider2.createStandardLabels(10));
slider2.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
if((value1+value2+value3+value4)>100){
slider2.setValue(100-(value2+value1+value4));
}
value3=((JSlider)e.getSource()).getValue();
statusLabel.setText("points left to spend : "+(100-(value1+value2+value3+value4)) );
}
});
jPanel2.add(jLabel2);
jPanel2.add(slider2);
JPanel jPanel3=new JPanel(new FlowLayout());
JLabel jLabel3=new JLabel("Wisdom");
JSlider slider3= new JSlider(JSlider.HORIZONTAL,0,100,0);
slider3.setMinorTickSpacing(1);
slider3.setMajorTickSpacing(10);
slider3.setPaintTicks(true);
slider3.setPaintLabels(true);
slider3.setLabelTable(slider3.createStandardLabels(10));
slider3.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
if((value1+value2+value3+value4)>100){
slider3.setValue(100-(value2+value3+value1));
}
value4=((JSlider)e.getSource()).getValue();
statusLabel.setText("points left to spend : "+(100-(value1+value2+value3+value4)) );
}
});
jPanel3.add(jLabel3);
jPanel3.add(slider3);
controlPanel.add(jPanel);
controlPanel.add(jPanel1);
controlPanel.add(jPanel2);
controlPanel.add(jPanel3);
mainFrame.setVisible(true);
}
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.