Hallo Leute,
zum Üben, habe ich die Tage erneut ein kein wenig was gebastelt. Ich komme hier aber jetzt nicht mehr weiter. Es geht darum, dass ich in meinem kleinen Fenster zwei JSlider eingebaut habe und eine Berechnung die dahinter steht. Außerdem habe ich noch andere Komponenten, die können aber außer Acht gelassen werden (hoffe ich). Ich möchte, dass wenn ich die verschiedenen Einträge der JComboBox auswähle, dass sich die JSlider bzw. jeweils ein JSlider aktualisiert. Was er aber nicht tut. Ich habe es bereits mit 3 Klassen versucht. Also für jeden Eintrag, dass sich die GUI einmal "komplett" ändert und ich über die Listener nur den Konstruktor aufrufe. Das hat nicht geklappt. Anschließend habe ich es mit einer Methode "aktualisiere" versucht. Das hat aber auch nicht geklappt. Ich bin jetzt schon fast soweit zu sagen, dass ich alle drei JSlider direkt einbaue und bei Auswahl auf enabled(true) oder false stelle. Das möchte ich jedoch nicht. Daher wollte ich noch einmal um Rat fragen. Es geht um ein theoretisches Skisprungspiel, bei dem man die Weite, die Haltung und die Landung bestimmen kann. Den Slider den man verändern müsste, wäre jeweils nur der Weitenslider. Aber ich komme hier nicht weiter.
Es muss eigtl. bei Auswahl nur ein Element verändert werden, aber das klappt nicht, hat hier jemand einen Tipp bzw. kann mir sagen, was ich falsch mache?
Hier der Code der 1 Klasse:
[/code]
und als Beispiel noch der Code einer zweiten Klasse:
[/code]
Lg
zum Üben, habe ich die Tage erneut ein kein wenig was gebastelt. Ich komme hier aber jetzt nicht mehr weiter. Es geht darum, dass ich in meinem kleinen Fenster zwei JSlider eingebaut habe und eine Berechnung die dahinter steht. Außerdem habe ich noch andere Komponenten, die können aber außer Acht gelassen werden (hoffe ich). Ich möchte, dass wenn ich die verschiedenen Einträge der JComboBox auswähle, dass sich die JSlider bzw. jeweils ein JSlider aktualisiert. Was er aber nicht tut. Ich habe es bereits mit 3 Klassen versucht. Also für jeden Eintrag, dass sich die GUI einmal "komplett" ändert und ich über die Listener nur den Konstruktor aufrufe. Das hat nicht geklappt. Anschließend habe ich es mit einer Methode "aktualisiere" versucht. Das hat aber auch nicht geklappt. Ich bin jetzt schon fast soweit zu sagen, dass ich alle drei JSlider direkt einbaue und bei Auswahl auf enabled(true) oder false stelle. Das möchte ich jedoch nicht. Daher wollte ich noch einmal um Rat fragen. Es geht um ein theoretisches Skisprungspiel, bei dem man die Weite, die Haltung und die Landung bestimmen kann. Den Slider den man verändern müsste, wäre jeweils nur der Weitenslider. Aber ich komme hier nicht weiter.
Es muss eigtl. bei Auswahl nur ein Element verändert werden, aber das klappt nicht, hat hier jemand einen Tipp bzw. kann mir sagen, was ich falsch mache?
Hier der Code der 1 Klasse:
Java:
[code]
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.util.Random;
import javax.swing.ButtonGroup;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JRadioButton;
import javax.swing.JSlider;
import javax.swing.JTextField;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
class Flugschanze extends JFrame implements ActionListener
{
private static final long serialVersionUID = 1L;
JSlider weite,haltung;
JRadioButton ja,nein;
JLabel telemark,punkte,ergebnis,punkte2,ergebnisGesamt,cr;
JTextField anzeigeWeite,anzeigeHaltung;
ButtonGroup bg;
JComboBox auswahl;
String []a=new String[]{"Normalschanze","Großschanze","Flugschanze"};
public Flugschanze()
{
setLayout(new GridLayout(7,2));
setTitle("Skispringe Punkte");
setSize(700,350);
add(auswahl=new JComboBox(a));
// auswahl.setActionCommand("");
auswahl.addItemListener(new ItemListener()
{
@Override
public void itemStateChanged(ItemEvent e)
{
if(e.getSource()=="Normalschanze")
{
// aktualisiere();
//Mit Aufruf des Konstruktors der Klasse Normalschanze lässt sich das Element ebenfalls nicht verändern
new Normalschanze();
}
else if(e.getSource()=="Großschanze")
{
new Großschanze();
}
}
});
auswahl.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent ae)
{
if(ae.getActionCommand().equals("Normalschanze"))
{
aktualisiere();
// new Normalschanze();
}
else if(ae.getActionCommand().equals("Großschanze"))
{
new Großschanze();
}
}
});
// auswahl.addActionListener(new ActionListener()
// {
// @Override
// public void actionPerformed(ActionEvent ae)
// {
// if(ae.getActionCommand().equals("Normalschanze"))
// {
// new Normalschanze();
// }
// }
// });
add(weite=new JSlider(JSlider.HORIZONTAL,0,250,185));
weite.setName("Weite");
add(anzeigeWeite=new JTextField());
//Der Wert des Sliders wird in da erste Textfeld übertragen
weite.addChangeListener(new ChangeListener()
{
@Override
public void stateChanged(ChangeEvent ce)
{
JSlider source;
source=(JSlider)ce.getSource();
if(source.getName().equals("Weite"))
{
anzeigeWeite.setText(""+source.getValue());
}
}
});
weite.setPreferredSize(new Dimension(300,50));
weite.setMajorTickSpacing(20);
weite.setMinorTickSpacing(5);
weite.setPaintLabels(true);
weite.setPaintTicks(true);
add(haltung=new JSlider(JSlider.HORIZONTAL,0,20,15));
haltung.setName("Haltung");
add(anzeigeHaltung=new JTextField());
haltung.setName("Haltung");
//Der wert des zweiten Sliders wird in das zweite Textfeld übertragen
haltung.addChangeListener(new ChangeListener()
{
@Override
public void stateChanged(ChangeEvent ce)
{
JSlider source;
source=(JSlider)ce.getSource();
if(source.getName().equals("Haltung"))
{
anzeigeHaltung.setText(""+source.getValue());
}
}
});
haltung.setPreferredSize(new Dimension(300,50));
haltung.setMajorTickSpacing(5);
haltung.setMinorTickSpacing(1);
haltung.setPaintLabels(true);
haltung.setPaintTicks(true);
add(telemark=new JLabel("Telemark",JLabel.LEFT));
add(ja=new JRadioButton("Ja"));
ja.addActionListener(this);
add(nein=new JRadioButton("Nein"));
nein.addActionListener(this);
bg=new ButtonGroup();
bg.add(ja);
bg.add(nein);
add(punkte=new JLabel("Punkte 1 Durchgang: ",JLabel.LEFT));
add(ergebnis=new JLabel());
ergebnis.setOpaque(true);
ergebnis.setBackground(Color.WHITE);
add(punkte2=new JLabel("Punkte insgesamt: ",JLabel.LEFT));
add(ergebnisGesamt=new JLabel());
ergebnisGesamt.setOpaque(true);
ergebnisGesamt.setBackground(Color.WHITE);
add(cr=new JLabel("cr"));
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
//Ergebnis Flugschanze
public double ergebnisFlugschanze(JSlider haltung,JSlider weite)
{
double weite1=60+((weite.getValue()-185)*1.2);
double haltung1=0;
if(haltung.getValue()<=10)
{
Random rd=new Random(0-2);
haltung1=(haltung.getValue()+rd.nextDouble())+(haltung.getValue()+rd.nextDouble())+(haltung.getValue()+rd.nextDouble());
}
else if(haltung.getValue()<=15)
{
Random rd=new Random(0-2);
haltung1=(haltung.getValue()+rd.nextDouble())+(haltung.getValue()+rd.nextDouble())+(haltung.getValue()+rd.nextDouble());
}
else if(haltung.getValue()>=15)
{
Random rd=new Random(0-2);
haltung1=(haltung.getValue()+rd.nextDouble())+(haltung.getValue()+rd.nextDouble())+(haltung.getValue()+rd.nextDouble());
}
double ergebnis1=weite1+haltung1;
return ergebnis1;
}
//Gesamtergebnis Flugschanze
public double ergebnis2Flugschanze(JSlider weite,JSlider haltung)
{
double weite1=60+((weite.getValue()-185)*1.2);
double haltung1=0;
if(haltung.getValue()<=10)
{
Random rd=new Random(0-2);
haltung1=(haltung.getValue()+rd.nextDouble())+(haltung.getValue()+rd.nextDouble())+(haltung.getValue()+rd.nextDouble());
}
else if(haltung.getValue()<=15)
{
Random rd=new Random(0-2);
haltung1=(haltung.getValue()+rd.nextDouble())+(haltung.getValue()+rd.nextDouble())+(haltung.getValue()+rd.nextDouble());
}
else if(haltung.getValue()>=15)
{
Random rd=new Random(0-2);
haltung1=(haltung.getValue()+rd.nextDouble())+(haltung.getValue()+rd.nextDouble())+(haltung.getValue()+rd.nextDouble());
}
double ergebnis1=(weite1+haltung1)*2;
return ergebnis1;
}
//Mit dieser Methode klappt die Aktualisierung bei Auswahl nicht
public void aktualisiere()
{
add(auswahl=new JComboBox(a));
// auswahl.setActionCommand("");
auswahl.addItemListener(new ItemListener()
{
@Override
public void itemStateChanged(ItemEvent e)
{
if(e.getSource()=="Normalschanze")
{
new Normalschanze();
}
else if(e.getSource()=="Großschanze")
{
new Großschanze();
}
}
});
auswahl.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent ae)
{
if(ae.getActionCommand().equals("Normalschanze"))
{
aktualisiere();
// new Normalschanze();
}
else if(ae.getActionCommand().equals("Großschanze"))
{
new Großschanze();
}
}
});
add(weite=new JSlider(JSlider.HORIZONTAL,0,140,115));
weite.setName("Weite");
add(anzeigeWeite=new JTextField());
//Der Wert des Sliders wird in da erste Textfeld übertragen
weite.addChangeListener(new ChangeListener()
{
@Override
public void stateChanged(ChangeEvent ce)
{
JSlider source;
source=(JSlider)ce.getSource();
if(source.getName().equals("Weite"))
{
anzeigeWeite.setText(""+source.getValue());
}
}
});
weite.setPreferredSize(new Dimension(300,50));
weite.setMajorTickSpacing(20);
weite.setMinorTickSpacing(5);
weite.setPaintLabels(true);
weite.setPaintTicks(true);
add(haltung=new JSlider(JSlider.HORIZONTAL,0,20,15));
haltung.setName("Haltung");
add(anzeigeHaltung=new JTextField());
haltung.setName("Haltung");
//Der wert des zweiten Sliders wird in das zweite Textfeld übertragen
haltung.addChangeListener(new ChangeListener()
{
@Override
public void stateChanged(ChangeEvent ce)
{
JSlider source;
source=(JSlider)ce.getSource();
if(source.getName().equals("Haltung"))
{
anzeigeHaltung.setText(""+source.getValue());
}
}
});
haltung.setPreferredSize(new Dimension(300,50));
haltung.setMajorTickSpacing(5);
haltung.setMinorTickSpacing(1);
haltung.setPaintLabels(true);
haltung.setPaintTicks(true);
// return 0;
}
//Beim drücken der Radio Buttons Ja oder Nein
@Override
public void actionPerformed(ActionEvent e)
{
int zahl=6;
double ergebnis3=ergebnisFlugschanze(haltung, weite)-zahl;
double ergebnis4=ergebnis2Flugschanze(weite, haltung)-(zahl*2);
if((ja.isSelected()==true)&&(nein.isSelected()==false))
{
ergebnis.setText(""+ergebnisFlugschanze(haltung, weite));
ergebnisGesamt.setText(""+ergebnis2Flugschanze(weite, haltung));
}
else if((nein.isSelected()==true)&&(ja.isSelected()==false))
{
ergebnis.setText(""+ergebnis3);
ergebnisGesamt.setText(""+ergebnis4);
}
}
}
und als Beispiel noch der Code einer zweiten Klasse:
Java:
[code]
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.util.Random;
import javax.swing.ButtonGroup;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JRadioButton;
import javax.swing.JSlider;
import javax.swing.JTextField;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
class Normalschanze extends JFrame implements ActionListener
{
private static final long serialVersionUID = 1L;
JSlider weite,haltung;
JRadioButton ja,nein;
JLabel telemark,punkte,ergebnis,punkte2,ergebnisGesamt,cr;
JTextField anzeigeWeite,anzeigeHaltung;
ButtonGroup bg;
JComboBox auswahl;
String []a=new String[]{"Normalschanze","Großschanze","Flugschanze"};
//Der Konstruktor lässt sich nicht aufrufen
public Normalschanze()
{
setLayout(new GridLayout(7,2));
setTitle("Skispringe Punkte");
setSize(700,350);
add(auswahl=new JComboBox(a));
auswahl.addItemListener(new ItemListener()
{
@Override
public void itemStateChanged(ItemEvent e)
{
if(e.getSource()=="Großschanze")
{
new Großschanze();
}
else if(e.getSource()=="Flugschanze")
{
new Flugschanze();
}
}
});
// auswahl.setActionCommand("");
// auswahl.addActionListener(new ActionListener()
// {
// @Override
// public void actionPerformed(ActionEvent ae)
// {
// if(ae.getActionCommand().equals("Großschanze"))
// {
// new Großschanze();
// }
// else if(ae.getActionCommand().equals("Flugschanze"))
// {
// new Flugschanze();
// }
// }
// });
// auswahl.addActionListener(new ActionListener()
// {
// @Override
// public void actionPerformed(ActionEvent ae)
// {
// if(ae.getActionCommand().equals("Normalschanze"))
// {
//
// }
// }
// });
add(weite=new JSlider(JSlider.HORIZONTAL,0,140,115));
weite.setName("Weite");
add(anzeigeWeite=new JTextField());
//Der Wert des Sliders wird in da erste Textfeld übertragen
weite.addChangeListener(new ChangeListener()
{
@Override
public void stateChanged(ChangeEvent ce)
{
JSlider source;
source=(JSlider)ce.getSource();
if(source.getName().equals("Weite"))
{
anzeigeWeite.setText(""+source.getValue());
}
}
});
weite.setPreferredSize(new Dimension(300,50));
weite.setMajorTickSpacing(20);
weite.setMinorTickSpacing(5);
weite.setPaintLabels(true);
weite.setPaintTicks(true);
add(haltung=new JSlider(JSlider.HORIZONTAL,0,20,15));
haltung.setName("Haltung");
add(anzeigeHaltung=new JTextField());
haltung.setName("Haltung");
//Der wert des zweiten Sliders wird in das zweite Textfeld übertragen
haltung.addChangeListener(new ChangeListener()
{
@Override
public void stateChanged(ChangeEvent ce)
{
JSlider source;
source=(JSlider)ce.getSource();
if(source.getName().equals("Haltung"))
{
anzeigeHaltung.setText(""+source.getValue());
}
}
});
haltung.setPreferredSize(new Dimension(300,50));
haltung.setMajorTickSpacing(5);
haltung.setMinorTickSpacing(1);
haltung.setPaintLabels(true);
haltung.setPaintTicks(true);
add(telemark=new JLabel("Telemark",JLabel.LEFT));
add(ja=new JRadioButton("Ja"));
ja.addActionListener(this);
add(nein=new JRadioButton("Nein"));
nein.addActionListener(this);
bg=new ButtonGroup();
bg.add(ja);
bg.add(nein);
add(punkte=new JLabel("Punkte 1 Durchgang: ",JLabel.LEFT));
add(ergebnis=new JLabel());
ergebnis.setOpaque(true);
ergebnis.setBackground(Color.WHITE);
add(punkte2=new JLabel("Punkte insgesamt: ",JLabel.LEFT));
add(ergebnisGesamt=new JLabel());
ergebnisGesamt.setOpaque(true);
ergebnisGesamt.setBackground(Color.WHITE);
add(cr=new JLabel("cr"));
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
//Berechnung auf einer Normalschanze
public double ergebnisNormalschanze(JSlider haltung,JSlider weite)
{
double weite1=60+((weite.getValue()-115)*2);
double haltung1=0;
if(haltung.getValue()<=10)
{
Random rd=new Random(0-2);
haltung1=(haltung.getValue()+rd.nextDouble())+(haltung.getValue()+rd.nextDouble())+(haltung.getValue()+rd.nextDouble());
}
else if(haltung.getValue()<=15)
{
Random rd=new Random(0-2);
haltung1=(haltung.getValue()+rd.nextDouble())+(haltung.getValue()+rd.nextDouble())+(haltung.getValue()+rd.nextDouble());
}
else if(haltung.getValue()>=15)
{
Random rd=new Random(0-2);
haltung1=(haltung.getValue()+rd.nextDouble())+(haltung.getValue()+rd.nextDouble())+(haltung.getValue()+rd.nextDouble());
}
double ergebnis1=weite1+haltung1;
return ergebnis1;
}
//Normalschanze Gesamtergebnis
public double ergebnis2Normalschanze(JSlider weite,JSlider haltung)
{
double weite1=60+((weite.getValue()-115)*2);
double haltung1=0;
if(haltung.getValue()<=10)
{
Random rd=new Random(0-2);
haltung1=(haltung.getValue()+rd.nextDouble())+(haltung.getValue()+rd.nextDouble())+(haltung.getValue()+rd.nextDouble());
}
else if(haltung.getValue()<=15)
{
Random rd=new Random(0-2);
haltung1=(haltung.getValue()+rd.nextDouble())+(haltung.getValue()+rd.nextDouble())+(haltung.getValue()+rd.nextDouble());
}
else if(haltung.getValue()>=15)
{
Random rd=new Random(0-2);
haltung1=(haltung.getValue()+rd.nextDouble())+(haltung.getValue()+rd.nextDouble())+(haltung.getValue()+rd.nextDouble());
}
double ergebnis1=(weite1+haltung1)*2;
return ergebnis1;
}
//Beim drücken der RadioButtons Ja oder Nein
@Override
public void actionPerformed(ActionEvent e)
{
int zahl=6;
double ergebnis3=ergebnisNormalschanze(haltung, weite)-zahl;
double ergebnis4=ergebnis2Normalschanze(weite, haltung)-(zahl*2);
if((ja.isSelected()==true)&&(nein.isSelected()==false))
{
ergebnis.setText(""+ergebnisNormalschanze(haltung, weite));
ergebnisGesamt.setText(""+ergebnis2Normalschanze(weite, haltung));
}
else if((nein.isSelected()==true)&&(ja.isSelected()==false))
{
ergebnis.setText(""+ergebnis3);
ergebnisGesamt.setText(""+ergebnis4);
}
}
}
Lg