Reihenfolge der Komponenten im einem JFrame

trytocatch

Mitglied
Hey Leute,

immer wieder passiert es mir, dass z.B. ein JLabel nicht aufgelöst ("cannot be resolved") werden kann. Dann kopiere ich die Komponten immer wild im Code umher, dass es halt am Ende passt.

Gibt es eine bestimmte Reihenfolge, wie z.B. JLabels -> TextFields-> Buttons oder ein anderes Schema, mit dem solche Probleme nicht auftreten und trotzdem die Struktur gewahrt wird?

LG
 

Robat

Top Contributor
Ich denke dein Problem bezieht sich nicht explizit auf UI-Komponenten sondern generell auf die Sichtbarkeit von Variablen.
Prinzipiell muss eine Variable erst bekannt sein bevor du sie benutzt. d.h. sowas hier
Java:
public static void main(String[] args) {
    System.out.println(a);
    int a = 5;
}
würde immer zu einem Fehler führen. Das gilt natürlich für alle Datentypen.

Genaueres kann man aber nur sagen wenn du mal ein Beispielcode zeigst, bei dem der Fehler auftritt. Eine festgelegte Reihenfolge (ob nun erst Labels und dann Buttons, o.ä.) gibt es nicht. Wichtig ist die Reihenfolge wie / wann du es deklarierst / initialisierst. Wildes rum kopieren und hoffen das es hilft ist jedenfalls nicht der richtige Weg.
 

trytocatch

Mitglied
Hey ich glaube auch, dass das daran liegt. Aber ich dachte man könnte das durch bestimmte Reihenfolgen beheben.
Hier ist ein Teil meines Quellcodes:
Dabei tritt im ActionListener beim lblNotennummer das Problem auf, dass es nciht resolved werden kann.
Wenn ich es davor in code kopiere funktioniert es aber...
Gibt es da irgendeine Methode, wie man das von vorneherein richtig anordnen kann? Oder muss ich mir jedes mal überlegen und dann doch rumkopieren?
LG und danke schonmal!!
Java:
btnNoteUebernehmen = new JButton("\u00DCbernehmen");
   btnNoteUebernehmen.addActionListener(new ActionListener() {
       public void actionPerformed(ActionEvent e) {
           if (!tfNote.getText().equals("")
               && Double.parseDouble(tfNote.getText()) >= 1
               && Double.parseDouble(tfNote.getText()) <= 6) {
               summe = summe + Double.parseDouble(tfNote.getText());
               notenschnitt = summe / i;
               noten[i-1]=Double.parseDouble(tfNote.getText());
               lblNotenschnitt.setText("Notenschnitt: "
                   + fzahl.format(notenschnitt));
               lblNotenzahl.setText("Anzahl eingegebene Noten: "
                   + Integer.toString(i));

               if (Double.parseDouble(tfNote.getText()) > schlechtesteNote) {
               schlechtesteNote = Double.parseDouble(tfNote.getText());
               lblSchlechtesteNote.setText("schlechteste Note: "
                   + Double.toString(schlechtesteNote));
               }
               if (Double.parseDouble(tfNote.getText()) < besteNote) {
               besteNote = Double.parseDouble(tfNote.getText());
               lblBesteNote
                   .setText("beste Note: " + Double.toString(besteNote));
               }
               if (i == notenzahl) {
               notenschnitt = summe / notenzahl;
               btnNoteUebernehmen.setVisible(false);
               btnNeu.setVisible(true);
               lblNoten.setText("Noten: ");
               for (int i=0; i<noten.length;i++) {
                   lblNoten.setText(lblNoten.getText()+" "+noten[i]);
               }
               lblNotennummer.setVisible(true);
               tfNotennummer.setVisible(true);
               btnNotennummer.setVisible(true);
               } else {
               i++;
               lblNote.setText(Integer.toString(i) + ".Note");
               tfNote.setText("");
               tfNote.requestFocus();
               }
               
           } else {
               JOptionPane.showMessageDialog(null, "gültige Note eingeben!");
               tfNote.requestFocus();
           }
       }
   });
   btnNoteUebernehmen.setVisible(false);
   btnNoteUebernehmen.setBounds(117, 83, 129, 23);
   contentPane.add(btnNoteUebernehmen);
   
   lblNotenzahl = new JLabel("");
   lblNotenzahl.setBounds(10, 120, 236, 14);
   contentPane.add(lblNotenzahl);
   
   lblNotenschnitt = new JLabel("");
   lblNotenschnitt.setBounds(10, 145, 236, 14);
   contentPane.add(lblNotenschnitt);
   
   lblBesteNote = new JLabel("");
   lblBesteNote.setBounds(10, 170, 236, 14);
   contentPane.add(lblBesteNote);
   
   lblSchlechtesteNote = new JLabel("");
   lblSchlechtesteNote.setBounds(10, 198, 236, 14);
   contentPane.add(lblSchlechtesteNote);
   

   

   
   tfNotennummer = new JTextField();
   tfNotennummer.setBounds(256, 84, 51, 20);
   contentPane.add(tfNotennummer);
   tfNotennummer.setColumns(10);
   tfNotennummer.setVisible(false);
   
   
   
   JLabel lblNotennummer = new JLabel("Notennummer bearbeiten");
   lblNotennummer.setBounds(317, 87, 134, 14);
   contentPane.add(lblNotennummer);
   lblNotennummer.setVisible(false);
 

Robat

Top Contributor
Mit probieren hat das nicht viel am Hut.
Man sollte als Programmierer einfach den Überblick haben wo man welche Komponenten braucht, wie die Abhängigkeiten sind und wann diese zu deklarieren sind.

Ob man sich das vorher durch Aufzeichnungen klar macht oder es im Kopf kann ist vom Programmier und der Größe des Programmes abhängig.
 

Blender3D

Top Contributor
Aber ich dachte man könnte das durch bestimmte Reihenfolgen beheben.
Das stimmt. Dein Problem ist, dass Du Deinen Code generell nicht strukturierst.
Eine Beispiel:
Code:
     if (!tfNote.getText().equals("")
                && Double.parseDouble(tfNote.getText()) >= 1
                && Double.parseDouble(tfNote.getText()) <= 6) {
                summe = summe + Double.parseDouble(tfNote.getText());
                notenschnitt = summe / i;
Hier liest Du einen Doublewert aus einem TextFeld aus. Wenn ich Deine Vorstellung richtig interpretiere, sollen da Noten von 1 - 6 herauskommen.
Aufgabe nach einem Buttonklick:
1) Text auslesen.
2) Text in ganze Zahl umwandeln eventuelle Fehler abfangen.
3) Bereich prüfen
4) Wenn ok die gültige Eingabe speichern und Berechnung machen. Sonst Textfeld auf den letzten gültigen Wert setzen.
Du liest den Text hier 4 mal aus. (3 x zu oft). Fängst einen möglichen Fehler nicht ab.
Die Variablen summe und notenschnitt sollten keine Attribute deiner Klasse sein. Es genügt die eingegebenen Noten und die Position der Eingabe im Notenarray zu speichern. Den Notenschnitt solltest Du über ein Funktion getNotenSchnitt() zur Verfügung stellen.
Code:
public double getNotenSchnitt() {
        int summe = 0;
        for( int note: noten )
            summe+= note;
        return summe/ (double)noten.length;
    }
Auch die Namen Deiner Variablen sind nicht gerade günstig gewählt.
'i' meint hier wohl den augenblicklichen Index im Array der Noten. ( z.B. currentMarkId )
usw.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Swing Reihenfolge der Initialisierung von Komponenten AWT, Swing, JavaFX & SWT 6
M Komponenten in anderer Reihenfolge anzeigen AWT, Swing, JavaFX & SWT 4
P Swing Hierachie oder Reihenfolge von Komponenten AWT, Swing, JavaFX & SWT 5
H JavaFX Timeline KeyFrame Reihenfolge AWT, Swing, JavaFX & SWT 6
K Swing Reihenfolge bei ActionListenern AWT, Swing, JavaFX & SWT 1
J Reihenfolge der Punkte in Vielecken AWT, Swing, JavaFX & SWT 3
GUI-Programmer JFilechooser, mehrere Datein selektieren und Reihenfolge (2) AWT, Swing, JavaFX & SWT 8
T Java-Anwendung arbeitet Programm in seltsamer Reihenfolge ab AWT, Swing, JavaFX & SWT 3
lumo LayoutManager SWT GridLayout - Reihenfolge ändern AWT, Swing, JavaFX & SWT 7
C Swing Text eines JButton mit String definieren? Reihenfolge? AWT, Swing, JavaFX & SWT 6
D Swing JOptionPane + FileChooser .. Reihenfolge wichtig!? AWT, Swing, JavaFX & SWT 7
A Reihenfolge von ActionListener und InputVerifier AWT, Swing, JavaFX & SWT 4
P JList: Reihenfolge der Elemente per Drag'n'Drop ändern. AWT, Swing, JavaFX & SWT 9
T Tab Reihenfolge bei JTextFeldern ändern AWT, Swing, JavaFX & SWT 4
H Reihenfolge z.B. KeyPressed in Child/Parent AWT, Swing, JavaFX & SWT 11
G Reihenfolge von Events AWT, Swing, JavaFX & SWT 4
S Labels und Button übereinander --> Reihenfolge? AWT, Swing, JavaFX & SWT 4
M Tab-Reihenfolge aber mit SWT AWT, Swing, JavaFX & SWT 1
K Tab-Reihenfolge AWT, Swing, JavaFX & SWT 7
T "globaler" keylistener/tab-reihenfolge/insertcurso AWT, Swing, JavaFX & SWT 5
B JTree - Reihenfolge der Nodes verändern AWT, Swing, JavaFX & SWT 3
N Fokus Reihenfolge ändern AWT, Swing, JavaFX & SWT 12
bernd Reihenfolge beim springen mit Tab-Taste ändern! AWT, Swing, JavaFX & SWT 4
D Swing Komponenten nicht sichtbar nach Start AWT, Swing, JavaFX & SWT 12
H Fehler: Zum Ausführen dieser Anwendung benötigte JavaFX-Runtime-Komponenten fehlen AWT, Swing, JavaFX & SWT 44
H Swing , GridLayout, Größenbestimmung der Komponenten im Layout AWT, Swing, JavaFX & SWT 8
BabySuna Swing Komponenten auslagern auf separate Datei AWT, Swing, JavaFX & SWT 8
B Mit ContentPane werden Komponenten angezeigt, mit SplitPane, JPanel nicht? AWT, Swing, JavaFX & SWT 6
P AWT Einzelne Komponenten zur Laufzeit austauschen? AWT, Swing, JavaFX & SWT 3
D [Swing] Anordnung von Komponenten mit GridLayout Manager AWT, Swing, JavaFX & SWT 13
L Komponenten eines Panels werden erst nach Klick darauf angezeigt AWT, Swing, JavaFX & SWT 13
E Komponenten von JScrollPane werden nicht richtig ermittelt AWT, Swing, JavaFX & SWT 2
F Gebundene Eigenschaften bei Komponenten mit NetBeans verarbeiten AWT, Swing, JavaFX & SWT 3
H LayoutManager Probleme mit Positionierung/Abständen der Komponenten AWT, Swing, JavaFX & SWT 14
dereki2000 Swing JFrame nah hinzufügen von Komponenten akualisieren. AWT, Swing, JavaFX & SWT 2
L Swing Komponenten erst nach Resize sichtbar AWT, Swing, JavaFX & SWT 2
S Swing Panel übernimmt komponenten von anderem AWT, Swing, JavaFX & SWT 7
P Gleichmäßige Anodnung von Komponenten im migLayout AWT, Swing, JavaFX & SWT 2
DaCrazyJavaExpert Swing Komponenten genauer anordnen. AWT, Swing, JavaFX & SWT 13
DaCrazyJavaExpert Swing Komponenten in GridBagLayout werden Falsch angeordnet AWT, Swing, JavaFX & SWT 1
P Größe und Ausrichtung von Komponenten festlegen AWT, Swing, JavaFX & SWT 13
MaxG. Swing Swing Komponenten zur Laufzeit hinzufügen AWT, Swing, JavaFX & SWT 2
D Swing Komponenten Anordnung eines Panels in Verbindung eines weiteren Panels AWT, Swing, JavaFX & SWT 9
N Swing Wie Programm strukturieren? (Dynamisch Komponenten hinzufügen) AWT, Swing, JavaFX & SWT 1
Neumi5694 LookAndFeel Look & Feel nicht angezeigter Komponenten ändern AWT, Swing, JavaFX & SWT 6
D JavaFX GUI Komponenten werden langsam bei größerer Datenmenge AWT, Swing, JavaFX & SWT 6
R Komponenten von JPanel bleiben unsichtbar AWT, Swing, JavaFX & SWT 2
D JavaFX Welche Komponenten vermisst ihr? Welche wären essenziell notwendig? AWT, Swing, JavaFX & SWT 8
M Datei mit Komponenten einbinden AWT, Swing, JavaFX & SWT 7
T SWT Externer zugrif auf SWT Komponenten AWT, Swing, JavaFX & SWT 3
Shams Probleme bei dem Hinzufügen von Komponenten zu einem JFrame AWT, Swing, JavaFX & SWT 3
J MouseOver bei Komponenten AWT, Swing, JavaFX & SWT 9
S Größe der Komponenten, beim ändern der größe des Frames, mit ändern! AWT, Swing, JavaFX & SWT 2
D LayoutManager GUI skalieren und deren Komponenten mit Grid(Bag)Layout-Manager. AWT, Swing, JavaFX & SWT 5
G Komponenten vergrößern sich nicht trotz Layoutmanager AWT, Swing, JavaFX & SWT 24
M JavaFX Scenebuilder eigene Komponenten AWT, Swing, JavaFX & SWT 8
A Swing per JComboBox gewünschtes Attribut auswählen und Komponenten passen sich an AWT, Swing, JavaFX & SWT 7
A JavaFX Eigene Komponenten im Scene Builder AWT, Swing, JavaFX & SWT 0
Q Swing Fenster updaten - Hinzugefügte Komponenten darstellen AWT, Swing, JavaFX & SWT 3
S BoxLayout: Anordnung der Komponenten links statt zentriert AWT, Swing, JavaFX & SWT 0
Bartertown JTable - Verschiedene Komponenten in einer Spalte unterbringen AWT, Swing, JavaFX & SWT 3
U Frame zeigt keine Komponenten AWT, Swing, JavaFX & SWT 7
G Applet Applet Komponenten flackern AWT, Swing, JavaFX & SWT 10
K LayoutManager Probleme mit 2 Komponenten AWT, Swing, JavaFX & SWT 9
M Komponenten übereinander AWT, Swing, JavaFX & SWT 7
R Komponenten werden erst nach maximierung des Frames sichtbar (Linux) AWT, Swing, JavaFX & SWT 5
H Swing Getter für GUI-Komponenten AWT, Swing, JavaFX & SWT 3
B Komponenten in Fenster verdrängen sich untereinander AWT, Swing, JavaFX & SWT 6
N Komponenten übereinander AWT, Swing, JavaFX & SWT 3
S Anordnung von GUI-Komponenten mit LayouManger (Problem beim anzeigen von JTextField) AWT, Swing, JavaFX & SWT 5
M Swing Komponenten enablen? AWT, Swing, JavaFX & SWT 4
X Java Komponenten jeder Zeit hinzufügen können AWT, Swing, JavaFX & SWT 3
S View-Komponenten im Controller bekannt machen AWT, Swing, JavaFX & SWT 7
D Grafische Komponenten komplett neu aufbauen (Neukonstruktion) AWT, Swing, JavaFX & SWT 5
A AWT Komponenten in JavaFX einbetten AWT, Swing, JavaFX & SWT 9
M Swing Komponenten erscheinen beim darüberfahren? AWT, Swing, JavaFX & SWT 7
H Komponenten unmittelbar nach dem Ausführen teilweise unsichtbar AWT, Swing, JavaFX & SWT 3
K GUI in Komponenten aufteilen (MVC) AWT, Swing, JavaFX & SWT 2
W Funktionen, sowie aufruf einiger Komponenten AWT, Swing, JavaFX & SWT 4
J Alle Komponenten eines JFrames durchlaufen AWT, Swing, JavaFX & SWT 2
R Swing Komponenten bleiben bei Animation unsichtbar AWT, Swing, JavaFX & SWT 7
T Unter JPanel liegende Komponenten "totschalten" AWT, Swing, JavaFX & SWT 5
morphesus Swing Komponenten werden nicht angezeigt AWT, Swing, JavaFX & SWT 8
Asamandra LayoutManager GridBagLayout - Komponenten (mit fill?) vergrößern aber Proportionen dabei erhalten? AWT, Swing, JavaFX & SWT 3
B Swing Komponenten auf JApplet setSize AWT, Swing, JavaFX & SWT 7
B Swing Komponenten auf JApplet setSize AWT, Swing, JavaFX & SWT 2
W Bildgröße automatisch an Komponenten anpassen AWT, Swing, JavaFX & SWT 3
TheWhiteShadow Swing Komponenten organisieren AWT, Swing, JavaFX & SWT 9
S Überlappung zweier Komponenten AWT, Swing, JavaFX & SWT 12
Z größe der komponenten bestimmen AWT, Swing, JavaFX & SWT 16
C GUI-Komponenten skalieren AWT, Swing, JavaFX & SWT 10
M Seltsames Problem mit Resize eines Fensters und seiner Komponenten AWT, Swing, JavaFX & SWT 2
D Swing Komponenten verstecken AWT, Swing, JavaFX & SWT 4
X Swing Resizing der Komponenten innheralb eines Panels AWT, Swing, JavaFX & SWT 2
T Swing Font für alle Komponenten ändern AWT, Swing, JavaFX & SWT 2
S Problem mit Swing Komponenten AWT, Swing, JavaFX & SWT 11
A Swing Alle Komponenten auf JFrame ermitteln AWT, Swing, JavaFX & SWT 4
E LookAndFeel Eigene Komponenten mit Synth L&F stylen AWT, Swing, JavaFX & SWT 2
S Swing Frame und Klasse extends JPanel - Komponenten zur Laufzeit austauschen AWT, Swing, JavaFX & SWT 18
S JButton und textfield.setText - Komponenten über-/verdecken sich AWT, Swing, JavaFX & SWT 15

Ähnliche Java Themen

Neue Themen


Oben