packageSchulprojekte;importjavax.swing.*;importjava.awt.*;importjava.awt.event.*;publicclass test extendsJFrameimplementsActionListener{//AtributeprivateJRadioButton[]Option=newJRadioButton[5];privateJCheckBox[]Wahl=newJCheckBox[3];privateString[]Text={"Durchschnittsnote 1","Durchschnittsnote 2","Durchschnittsnote 3","Durchschnittsnote 4","Durchschnittsnote 4<"};// AuswahlmöglichkeitenprivateString[]Extra={"Grundschule","S1","S2"};//Weitere Auswahlmöglichkeiten// Konstruktorpublic test (){super("Übung für die Arbeit");// Überschrift des FenstersButtonGroupGruppe=newButtonGroup();JPanelPlatte=newJPanel();Box links =Box.createVerticalBox();Box rechts =Box.createVerticalBox();Platte.setLayout (newFlowLayout());// Radiobuttons erzeugen, mit Ereignissen verknüpfen und einsetztenfor(int i =0;i<6;i++){Option[i]=newJRadioButton(Text[i]);Option[i].addActionListener(this);Gruppe.add (Option[i]);
links.add(Option[i]);// Buttons werden der Gruppe und linksoben zugeordnet}Option[0].setSelected (true);// CheckBoxen erzeugen, mit Ereignissen verknüfen und einsetzenfor(int i =0;i<3;i++){Wahl[i]=newJCheckBox(Extra[i]);Wahl[i].addActionListener(this);
rechts.add(Wahl[i]);}Platte.add(links);Platte.add(rechts);setContentPane(Platte);}publicvoid actionPerformed (ActionEventEreignis){ObjectQuelle=Ereignis.getSource();StringTitel="Übung für die Arbeit";for(int i =0;i<3;i++)if(Wahl[i].isSelected())Titel=Titel+"("+Extra[i]+")";setTitle(Titel);for(int i=0;i<6;i++)if(Quelle==Option[i])JOptionPane.showMessageDialog(null,null);if(Wahl[1].isSelected()|Wahl[2].isSelected()|Wahl[3].isSelected()|Wahl[0].isSelected()&&Option[2].isSelected()|Option[1].isSelected())JOptionPane.showMessageDialog(null,"Gut gemacht");}publicstaticvoid main (String[] args){
test Rahmen=newtest();Rahmen.setSize(1200,500);Rahmen.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);Rahmen.setVisible(true);}}
Und als Fehlermeldung bekomme ich :
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5
at Schulprojekte.Aufgabe.<init>(Aufgabe.java:36)
at Schulprojekte.Aufgabe.main(Aufgabe.java:78)
Ich schreibe morgen eine Arbeit und es wäre nett wenn mir schnell jemand sagen könnte wo mein Fehler ist da ich ein ähnliches Programm hab und das funktioniert perfekt.
Ich weiß nicht ob das wichtig ist aber ich arbeite mit Eclipse helios 3.6
Warum ignorieren alle eigendlich immer die Exceptions und den StackTrace? Der versucht einen doch zu sagen, wo der Fehler liegt.
In Zeile 36 versucht er auf Feld 5 eines Arrays zuzugreifen, welches nicht existiert. Steht doch alles da.
ich hätte nicht gedacht das ich so schnell eine Antwort bekomme.
Angesichtsdessen das mein Lehrer auch nicht so viel weiß glaub ich .. können wir auch leider nicht viel, deswegen auch meine nächste Frage was ist Arrays.
Ich ignorier die Fehlermeldung nicht, aber ich weiß einfach bisher noch nichts damit anzufangen.
privateJRadioButton[]Option=newJRadioButton[5];// Wertebreich von 0 ... 4// ...for(int i =0; i <6; i++){Option[i]=newJRadioButton(Text[i]);// aber Zugriff von 0 ... 5// ...}
Ich würde die Zahl durch eine Konstante ersetzen - du machst einerseits weniger Programmierfehler und andererseits wird dein Program änderungsfreundlicher.
Java:
finalint size=5;privateJRadioButton[]Option=newJRadioButton[size];// ...for(int i =0; i < size; i++){Option[i]=newJRadioButton(Text[i]);// ...}
Ich würde die Zahl durch eine Konstante ersetzen - du machst einerseits weniger Programmierfehler und andererseits wird dein Program änderungsfreundlicher.
Damit wird die Redundanz schon etwas reduziert - und damit sowohl eine Fehlerquelle eliminiert als auch die Wartbarkeit verbessert.
Trotzdem steckt da immer noch vermeidbare Redundanz, weil ja sowohl das Array der Buttons als auch das der Texte gleich lang sein müssen.
Deshalb würde ich das lieber so machen:
Java:
privateString[] text ={// Auswahlmöglichkeiten"Durchschnittsnote 1","Durchschnittsnote 2","Durchschnittsnote 3","Durchschnittsnote 4","Durchschnittsnote 5"};privateJRadioButton[] option =newJRadioButton[text.length];/* ... */for(int i =0; i < text.length; i++){
option[i]=newJRadioButton( text[i]);}}
So passen die Längen der beiden Arrays automatisch zueinander. Wenn man eine neue Auswahl ergänzen will, dann muss man nur noch die Liste für die Initialisierung des text-Arrays erweitern.