Swing Slider-Value auslesen und weitergeben

aikon96

Neues Mitglied
Hey Leute, ich hoffe ich bin hier richtig.
Habe mal die Forumsuche benutzt, aber bin nicht wirklich so richtig fündig geworden.

Also, ich muss eine JAVA GUI erstellen, die folgendes beinhaltet:

Slider, Progressbar, Radiobuttons und einen Text.
Ich habe soweit mal alles visuell ^^ jedoch will ich jetzt den JSlider mit meinen anderen Komponenten verbinden, also hab ich einen addchangeListener erstellt. Ich habe jetzt zwar den Wert des Sliders, jedoch kann ich ihn nicht an die Progressbar etc... weiterreichen. Steh gerade irgendwie auf dem Schlauch :-/

Ich habe in meinen Listener,
Code:
JSlider slider = (JSlider)e.getSource();
drin, damit greife ich ja auf den Slider zu?!

Ich kann den Slider bewegen, jedoch ändern sich die Werte in der Progressbar etc. nicht :-(


Java:
package GUI;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.GridLayout;


import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSlider;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;

import sun.awt.SunHints.Value;

import com.sun.java.swing.plaf.nimbus.SliderPainter;

public class mainFrame extends JFrame implements ChangeListener
{
	private final JFrame window;
	
	
	public mainFrame() 
    {
	
		//window settings
		window = new JFrame("Exercise GUI");
		//size of window
		window.setSize(400,300);
		//add close button
        window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        //set visible to true
        window.setVisible(true);        
        
        
        //create header
        JLabel label1 = new JLabel("Please use the slider");
                        
        
        //create slider        
        JSlider slider = new JSlider();        
        slider.add(Box.createHorizontalStrut(30));
        slider.add(new JSlider(0,100));
        slider.setMinorTickSpacing(1);
        slider.setValue(50);
        
        //register slider to events
        slider.addChangeListener(this);        
        
        Box value = Box.createHorizontalBox();
        value.add(Box.createHorizontalStrut(30));
        
        value.add(new JLabel("Value of the slider "+ slider.getValue()+" %"));
        
        
        //create progressBar
        JProgressBar progress = new JProgressBar(0,100);
         
        //create color line
        Box color = Box.createHorizontalBox();
        
        color.add(new JLabel("Color"));
        color.add(Box.createHorizontalStrut(20));
        
        //group radio buttons
        ButtonGroup radioGroup = new ButtonGroup();
        
        //create radio buttons
        JRadioButton rbutton;
        
        //create blue radio button
        radioGroup.add(rbutton = new JRadioButton("Blue"));
        color.add(rbutton);
        color.add(Box.createHorizontalStrut(10));        

        //create red radio button        
        radioGroup.add(rbutton = new JRadioButton("Red"));
        color.add(rbutton);     
        
                
        Box popup = Box.createVerticalBox();
        popup.add(label1);
        popup.add(slider);
        popup.add(value);
        popup.add(progress);
        popup.add(color);
        
        
        Container content = window.getContentPane();
        content.setLayout(new BorderLayout());
        content.add(popup, BorderLayout.CENTER);
           
    }

		
    public static void main(String[] args)
       {
 	   mainFrame g = new mainFrame();          
       }


	public void stateChanged(ChangeEvent e) {
		
		int ValueOfSlider;
				
		JSlider slider = (JSlider)e.getSource();
		ValueOfSlider = slider.getValue();
				
		JLabel value = (JLabel)e.getSource();
		value.setText("Value of the slider "+ ValueOfSlider+" %");
	
		JProgressBar progess = (JProgressBar)e.getSource();
		progess.setValue(ValueOfSlider);
		
		
	}

}
 
Zuletzt bearbeitet von einem Moderator:

eRaaaa

Top Contributor
Alsooo

#1 - du solltest
Code:
window.setVisible(true);
erst gaanz am Ende aufrufen!
#2 - ja mit e.getSource kommst du AUCH an den Slider ran. Allerdings hast du paar Zeilen danach eben auch ein Cast aufs JLabel, das kann ja so gar nicht klappen! e.getSource liefert immer die Komponente die das Event ausgelöst hat, das kann generell eh immer nur eine sein! Und hier sogar auch IMMER nur der Slider, denn du addest ja sonst nirgends den Listener ran!
Dein Verständnissproblem liegt also an dem e.getSource! Was du machen kannst ist eben, die anderen beiden Komponenten nicht lokal im Konstruktor zu deklarieren, sondern eben außerhalb, so dass du dann direkt im Listener darauf zugreifen kannst

Java:
package GUI;

import java.awt.BorderLayout;
import java.awt.Container;

import javax.swing.Box;
import javax.swing.ButtonGroup;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JProgressBar;
import javax.swing.JRadioButton;
import javax.swing.JSlider;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;

public class mainFrame extends JFrame implements ChangeListener { //klassen immer gross schreiben!
	private final JFrame window;
	private JProgressBar progress; 
	private JLabel label;

	public mainFrame() {

		// window settings
		window = new JFrame("Exercise GUI");
		// size of window
		window.setSize(400, 300);
		// add close button
		window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		// set visible to true


		// create header
		JLabel label1 = new JLabel("Please use the slider");

		// create slider
		JSlider slider = new JSlider();
		slider.add(Box.createHorizontalStrut(30));
		slider.add(new JSlider(0, 100));
		slider.setMinorTickSpacing(1);
		slider.setValue(50);

		// register slider to events
		slider.addChangeListener(this);

		Box value = Box.createHorizontalBox();
		value.add(Box.createHorizontalStrut(30));

		label = new JLabel("Value of the slider " + slider.getValue() + " %");
		value.add(label);

		// create progressBar
		progress = new JProgressBar(0, 100);

		// create color line
		Box color = Box.createHorizontalBox();

		color.add(new JLabel("Color"));
		color.add(Box.createHorizontalStrut(20));

		// group radio buttons
		ButtonGroup radioGroup = new ButtonGroup();

		// create radio buttons
		JRadioButton rbutton;

		// create blue radio button
		radioGroup.add(rbutton = new JRadioButton("Blue"));
		color.add(rbutton);
		color.add(Box.createHorizontalStrut(10));

		// create red radio button
		radioGroup.add(rbutton = new JRadioButton("Red"));
		color.add(rbutton);

		Box popup = Box.createVerticalBox();
		popup.add(label1);
		popup.add(slider);
		popup.add(value);
		popup.add(progress);
		popup.add(color);

		Container content = window.getContentPane();
		content.setLayout(new BorderLayout());
		content.add(popup, BorderLayout.CENTER);
		
		window.setVisible(true);

	}

	public static void main(String[] args) {
		mainFrame g = new mainFrame();
	}

	public void stateChanged(ChangeEvent e) {

		int valueOfSlider;

		JSlider slider = (JSlider) e.getSource();
		valueOfSlider = slider.getValue();
		
		label.setText("Value of the slider " + valueOfSlider + " %");
		progress.setValue(valueOfSlider);

	}

}
 

Michael...

Top Contributor
Java:
	public void stateChanged(ChangeEvent e) {
		...
		JSlider slider = (JSlider)e.getSource();
		...
		JLabel value = (JLabel)e.getSource();
		...
		JProgressBar progess = (JProgressBar)e.getSource();
		...
	}
Wie soll das den funktionieren? Die Quelle eines Events kann ja nur ein Objekt sein - als der JSlider sein. Da fliegt doch beim Ausführen eine ClassCastException.

Das casten könnte man sich sparen, in dem man die Variable mit Referenz auf den JSlider als Instanzvariable halten würde.
 

aikon96

Neues Mitglied
Vielen Dank für die Rückmeldung! Besonder eRaaaa.

Soweit klappt es nun, nur noch ein Ding:

Ich habe zwei Radiobuttons eingebunden und mit dem Actionlistener verknüpft.
Durch die Radiobuttons kann ich die Sliderfarbe ändern.

Ich hab nur das Problem, dass ich die Farbe nur einmal auf rot ändern kann, danach geht es nicht mehr. Der Denkfehler müsste bei True/false irgendwo sein, nur weiß ich nicht, wie ich den Radiobutton per befehl umschreiben kann, dass er false/true ist...

Code:
package GUI;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.Box;
import javax.swing.ButtonGroup;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JProgressBar;
import javax.swing.JRadioButton;
import javax.swing.JSlider;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;

public class mainFrame extends JFrame implements ChangeListener,ActionListener{
	private final JFrame window;
	private JProgressBar progress; 
	private JLabel label;
	private JRadioButton red;
	private JRadioButton blue;

	public mainFrame() {

		// window settings
		window = new JFrame("Exercise GUI");
		// size of window
		window.setSize(400, 300);
		// add close button
		window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		// set visible to true


		// create header
		JLabel label1 = new JLabel("Please use the slider");

		// create slider
		JSlider slider = new JSlider();
		slider.add(Box.createHorizontalStrut(30));
		slider.add(new JSlider(0, 100));
		slider.setMinorTickSpacing(1);
		slider.setValue(50);

		// register slider to events
		slider.addChangeListener(this);

		Box value = Box.createHorizontalBox();
		value.add(Box.createHorizontalStrut(30));

		label = new JLabel("Value of the slider " + slider.getValue() + " %");
		value.add(label);

		// create progressBar
		progress = new JProgressBar(0, 100);
		progress.setValue(slider.getValue());
		progress.setForeground(Color.blue);
		

		// create color line
		Box color = Box.createHorizontalBox();

		color.add(new JLabel("Color"));
		color.add(Box.createHorizontalStrut(20));

		// group radio buttons
		ButtonGroup radioGroup = new ButtonGroup();

		
		// create blue radio button
		radioGroup.add(blue = new JRadioButton("Blue", true));
		color.add(blue);
		
	    // Register a listener for the radio buttons.
	        		

	    color.add(Box.createHorizontalStrut(10));
		
		// create red radio button
		radioGroup.add(red = new JRadioButton("Red", false));
		color.add(red);
		
		blue.addActionListener(this);
		red.addActionListener(this);
		

		Box popup = Box.createVerticalBox();
		popup.add(label1);
		popup.add(slider);
		popup.add(value);
		popup.add(progress);
		popup.add(color);

		Container content = window.getContentPane();
		content.setLayout(new BorderLayout());
		content.add(popup, BorderLayout.CENTER);
		
		window.setVisible(true);

	}

	public static void main(String[] args) {
		mainFrame g = new mainFrame();
	}

	public void stateChanged(ChangeEvent e) {

		int valueOfSlider;	

		JSlider slider = (JSlider) e.getSource();
		valueOfSlider = slider.getValue();
		
		label.setText("Value of the slider " + valueOfSlider + " %");
		progress.setValue(valueOfSlider);
		
		

	}
	
	public void actionPerformed(ActionEvent actionEvent) {

		
			

		JRadioButton blue = (JRadioButton) actionEvent.getSource();
				
		if (blue.isValid()==true){
			
			progress.setForeground(Color.blue);
			
		}
		
		JRadioButton red = (JRadioButton) actionEvent.getSource();
		
		if (red.isValid()==true){
			progress.setForeground(Color.red);
		}

	}
		
}
 

eRaaaa

Top Contributor
Du scheinst das mit dem getSource noch immer nicht verstanden zu haben :pueh:
Lies dich da besser noch einmal ein oder stelle uns konkrete Fragen dazu!
Und was soll das isValid() ? :bahnhof:

Java:
	public void actionPerformed(ActionEvent actionEvent) {
		JRadioButton btn = (JRadioButton) actionEvent.getSource();
		if (btn == blue) {
			progress.setForeground(Color.BLUE);
		} else {
			progress.setForeground(Color.RED);
		}
	}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
P JavaFX Slider soll Value erst ab einer bestimmten Bedinung aendern AWT, Swing, JavaFX & SWT 19
Semox Swing Slider mit Value Auswertung wird nicht angezeigt AWT, Swing, JavaFX & SWT 11
J Swing Slider AWT, Swing, JavaFX & SWT 11
B Slider-Wert an anderen Slider übergeben AWT, Swing, JavaFX & SWT 5
S JavaFX Slider freezt nach Benutzung AWT, Swing, JavaFX & SWT 3
G JavaFX Slider in JavaFX beide Seiten beschriften AWT, Swing, JavaFX & SWT 2
S Swing Customised Slider AWT, Swing, JavaFX & SWT 2
J Slider Wert anzeigen AWT, Swing, JavaFX & SWT 15
C Slider für Zeitauswahl AWT, Swing, JavaFX & SWT 3
A Slider soll einen Wert übergeben AWT, Swing, JavaFX & SWT 1
L ComboBox: slider positionieren AWT, Swing, JavaFX & SWT 0
H org.eclipse.swt.Slider ohne Buttons AWT, Swing, JavaFX & SWT 1
H org.eclipse.swt.widgets.Slider und negative Werte AWT, Swing, JavaFX & SWT 3
H SWT - DataBinding - observerMax für Slider AWT, Swing, JavaFX & SWT 1
G 2D-Slider bzw. eine graphische Auswahlkomponente die sich so verhält AWT, Swing, JavaFX & SWT 6
A Slider (JSlider?) AWT, Swing, JavaFX & SWT 7
B runder Slider AWT, Swing, JavaFX & SWT 3
D Audio Player Progress Slider nicht flüssig AWT, Swing, JavaFX & SWT 2
O Verbesserungfrage zu einem MP3Player Slider - Ebenius kannst du helfen bitte ? AWT, Swing, JavaFX & SWT 10
G Slider, der naja schwer zu sagen. AWT, Swing, JavaFX & SWT 15
M slider soll keine zwischenwerte annehmen AWT, Swing, JavaFX & SWT 2
Ernesto95 JavaFX Return Value nach Beendigung einer Animation AWT, Swing, JavaFX & SWT 15
Zrebna Problem bei Eventhandling (Value soll nach jedem erneutem Klick gelöscht werden) AWT, Swing, JavaFX & SWT 4
P JavaFX Key-Value-Paar auf TreeItem ermitteln AWT, Swing, JavaFX & SWT 6
N JavaFX TreeItem: Value-Binding AWT, Swing, JavaFX & SWT 1
J CheckTreeView mit eigenem Cell Value AWT, Swing, JavaFX & SWT 3
U Swing Jtable cells value editable AWT, Swing, JavaFX & SWT 1
G Swing Value von einer JScrollBar auf eine andere übertragen AWT, Swing, JavaFX & SWT 2
T jSlider-Value als Float in jLabel ausgeben AWT, Swing, JavaFX & SWT 2
O Swing JSlider mit doppelter Value AWT, Swing, JavaFX & SWT 6
C Value eines RadioButtons ausgeben AWT, Swing, JavaFX & SWT 6
S SWT ProgressBar: Value/Selection anzeigen AWT, Swing, JavaFX & SWT 4
J Swing JXTable, vom CellRenderer gerendertes Value holen. AWT, Swing, JavaFX & SWT 5
G Value vom TreeCellEditor ist immer null AWT, Swing, JavaFX & SWT 3
O ScrollBar.setValue(int value); ? AWT, Swing, JavaFX & SWT 3
L Jcombobox + value Wert AWT, Swing, JavaFX & SWT 7
L JTable SelectRowByValue(Object Value)? AWT, Swing, JavaFX & SWT 3
L Button ändert eigenes Bild und Progressbar-Value nicht AWT, Swing, JavaFX & SWT 6
Z Swing Wert aus Textfeld auslesen -- null Fehler AWT, Swing, JavaFX & SWT 4
B Swing Posistion von JButton auslesen gibt immer 0 aus AWT, Swing, JavaFX & SWT 1
J JFram Location aus Konstruktor einer anderen Klasse auslesen AWT, Swing, JavaFX & SWT 10
it_is_all Swing Mehrere JComboBoxen - wie die versch. Boxen mit ItemStateChange auslesen? AWT, Swing, JavaFX & SWT 3
T Swing JTable auslesen und befüllen AWT, Swing, JavaFX & SWT 8
Soloeco Swing JTextField auslesen Klassen übergreifend AWT, Swing, JavaFX & SWT 16
M JavaFX - Array in View auslesen AWT, Swing, JavaFX & SWT 12
F Swing Spaltenbreite einer Column eines JTable auslesen AWT, Swing, JavaFX & SWT 5
B JavaFX Symbole aus Fonts auslesen AWT, Swing, JavaFX & SWT 1
sandaime Swing Thread für CMD auslesen AWT, Swing, JavaFX & SWT 16
G Werte aus dem GUI Auslesen AWT, Swing, JavaFX & SWT 8
3 JComboBox - Action - Auslesen & Umwandeln AWT, Swing, JavaFX & SWT 9
X Swing Per Button die Labels und Textfelder auslesen AWT, Swing, JavaFX & SWT 8
D JavaFX Dynamisch erzeugte Checkboxen aus VBox auslesen AWT, Swing, JavaFX & SWT 3
thobren JavaFX Inhalte aus dynamischen vbox mit TextArea auslesen AWT, Swing, JavaFX & SWT 9
F geänderten Textfeldinhalt mit parse auslesen AWT, Swing, JavaFX & SWT 1
T Swing NullPointerException beim auslesen von jTextField - Anfänger! AWT, Swing, JavaFX & SWT 3
M JavaFX Wert aus Tabellenzelle auslesen AWT, Swing, JavaFX & SWT 4
M Swing JFreechart X-Achse Tick auslesen AWT, Swing, JavaFX & SWT 13
T Swing jComboBox auslesen mit Datenbankanbindung AWT, Swing, JavaFX & SWT 3
P Swing JTable Werte auslesen bzw überschreiben AWT, Swing, JavaFX & SWT 5
O Swing Text aus Textfield auslesen AWT, Swing, JavaFX & SWT 8
T Swing "Textgröße" aus OS auslesen AWT, Swing, JavaFX & SWT 3
D Swing Farbe aus Pixel vom JFrame auslesen AWT, Swing, JavaFX & SWT 17
R Array aus einem Objekt auslesen AWT, Swing, JavaFX & SWT 4
F Swing jComboBox auslesen AWT, Swing, JavaFX & SWT 6
T SWT Table (mit Spinner Spalte) Daten auslesen AWT, Swing, JavaFX & SWT 4
R Int aus JSpinner auslesen und Tabelle erstellen AWT, Swing, JavaFX & SWT 3
X Gridbaglayout gridx + gridy auslesen? AWT, Swing, JavaFX & SWT 7
M JTextField gibt beim auslesen null aus AWT, Swing, JavaFX & SWT 9
L SWT Eingabefelder beim Schließen des Forms auslesen AWT, Swing, JavaFX & SWT 3
D Applet Auslesen von Images aus Ressourcen AWT, Swing, JavaFX & SWT 29
F icon aus exe auslesen mithilfe des JFilechooser ? AWT, Swing, JavaFX & SWT 4
F Textfelder auslesen AWT, Swing, JavaFX & SWT 12
T 3D-Grafik (Java3D) Aus einem Objekt einer Szene (Würfel, Ebene) die wichtigen Randkoordinaten auslesen AWT, Swing, JavaFX & SWT 3
P gleichanfangende Zeilen solange auslesen bis es die gibt AWT, Swing, JavaFX & SWT 12
J JTextField auslesen lassen AWT, Swing, JavaFX & SWT 4
C Swing TextField auslesen AWT, Swing, JavaFX & SWT 21
C TextFelder auslesen AWT, Swing, JavaFX & SWT 20
E Textfeld auslesen AWT, Swing, JavaFX & SWT 2
F SWT Tabelle Zeile auslesen AWT, Swing, JavaFX & SWT 3
M Position eines JLabels mit getX() auslesen AWT, Swing, JavaFX & SWT 2
D SWT CheckBox auslesen (Window Builder Pro) AWT, Swing, JavaFX & SWT 2
E Wert eines selektierten Knotens in einem JTree auslesen AWT, Swing, JavaFX & SWT 3
J Mausposition auslesen AWT, Swing, JavaFX & SWT 4
L Name des JLabels auslesen bei Mouseclick AWT, Swing, JavaFX & SWT 2
B Swing Betrag mit Komma aus jformattedtextfield auslesen. AWT, Swing, JavaFX & SWT 2
Y JSlider Wert auslesen (Kategorien) AWT, Swing, JavaFX & SWT 2
K Text vom JTextField auslesen AWT, Swing, JavaFX & SWT 9
E werte aus List auslesen AWT, Swing, JavaFX & SWT 2
R Textfield auslesen auf Anforderung AWT, Swing, JavaFX & SWT 4
M Zeitkritisches auslesen von Tastatureingaben AWT, Swing, JavaFX & SWT 6
M Swing JTextField "onthefly" auslesen und berechnen AWT, Swing, JavaFX & SWT 7
C Swing JPasswordField Password auslesen AWT, Swing, JavaFX & SWT 7
K 2D-Grafik Fehler beim Farbe auslesen AWT, Swing, JavaFX & SWT 3
K JTable Werte auslesen AWT, Swing, JavaFX & SWT 2
T JSpinner in JTable: Problem beim Auslesen, funktioniert erst beim Zellwechsel AWT, Swing, JavaFX & SWT 7
3 2D-Grafik Rechtecke auf Bilder legen und auslesen AWT, Swing, JavaFX & SWT 4
P Swing ComboBox(en) in JTable auslesen und ausgeben AWT, Swing, JavaFX & SWT 11
1 Textfeld auslesen AWT, Swing, JavaFX & SWT 11
R TextField auslesen & in Objekteigenschaften speichern AWT, Swing, JavaFX & SWT 22
J JSpinner + SpinnerNumberModel int auslesen AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben