Swing Problem mit Grafischer Oberfläche

cedi

Mitglied
Hi,
ich hab ne GUI von Hand Programmiert, da es mit NetBeans diverse nervige Fehler gibt, etc...
könnte mir jemand sagen, wieso um himmels willen die GUI nicht dargestellt wird sondern nur so ein kleines Quadratisches Fenster mit einer geschätzten größe von 100x100 Pixel, was keinen Inhalt hat?

Danke

Code von der MainWindow.java:
Java:
package gftlayoutchecker;

import java.awt.event.*;
import javax.swing.*;
/**
 *
 * @author Praktikant
 */
public class MainWindow extends JFrame{
    JLabel pfadVonAusgangsDatei;
    JLabel pfadVonUebersetzteDatei;
    JTextField pfadAusgangsDatei;
    JTextField pfadUbersetzteDatei;
    JTextField ausgabeAusgangsDatei;
    JTextField ausgabeUebersetzteDatei;
    JButton vergleichen;
    
    protected void initWindow() {
        //Instanzieren
        pfadVonAusgangsDatei = new JLabel("Pfad Ausgangs Datei");
        pfadVonUebersetzteDatei = new JLabel("Pfad Übersetzte Datei");
        pfadAusgangsDatei = new JTextField();
        pfadUbersetzteDatei = new JTextField();
        ausgabeAusgangsDatei = new JTextField();
        ausgabeUebersetzteDatei = new JTextField();
        vergleichen = new JButton("Vergleichen");   
        
        //Position in x:y und Breite und Höhe Festlegen b:h
        
        //Ausgangs teile
        pfadVonAusgangsDatei.setBounds(5,15,15,25);//Label
        pfadAusgangsDatei.setBounds(25,15,50,25);//TextBox
        ausgabeAusgangsDatei.setBounds(5,25,70,125);//Ausgabefenster
        
        //übersetzte Teilepfad
        pfadVonUebersetzteDatei.setBounds(80,15,15,25);//Label
        pfadUbersetzteDatei.setBounds(450,15,400,25);//Textbox
        ausgabeUebersetzteDatei.setBounds(80,15,70,125);//Ausgabefenster
        
        //Button
        vergleichen.setBounds(5,5,120,25);
        
        //Elemente im Fenster hinzufügen
        this.getContentPane().add(vergleichen);
        this.getContentPane().add(pfadVonAusgangsDatei);
        this.getContentPane().add(pfadAusgangsDatei);
        this.getContentPane().add(ausgabeAusgangsDatei);
        this.getContentPane().add(pfadVonUebersetzteDatei);
        this.getContentPane().add(pfadUbersetzteDatei);
        this.getContentPane().add(ausgabeUebersetzteDatei);
        this.pack();
        
        //Action Listener HInzufügen
	vergleichen.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                buttonVergleicheClicked();
            }
        });

        
        
    }
    
    public void AppWindow() {
        this.getContentPane().setLayout(null);
        this.initWindow();
        this.addWindowListener(new WindowListener() {
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }

            public void windowOpened(WindowEvent we) {
                throw new UnsupportedOperationException("Not supported yet.");
            }

            public void windowClosed(WindowEvent we) {
                throw new UnsupportedOperationException("Not supported yet.");
            }

            public void windowIconified(WindowEvent we) {
                throw new UnsupportedOperationException("Not supported yet.");
            }

            public void windowDeiconified(WindowEvent we) {
                throw new UnsupportedOperationException("Not supported yet.");
            }

            public void windowActivated(WindowEvent we) {
                throw new UnsupportedOperationException("Not supported yet.");
            }

            public void windowDeactivated(WindowEvent we) {
                throw new UnsupportedOperationException("Not supported yet.");
            }
        });
    }
    
    public void buttonVergleicheClicked() {
        //kommt noch
    }
    
    
}



Und der Code von der Passenden Start.java:
Java:
package gftlayoutchecker;

/**
 *
 * @author cedi
 */
public class Main {
    public static void main(String[] args) {
        MainWindow theAppWindow = new MainWindow();
        theAppWindow.setBounds(130, 160, 130, 160);
        theAppWindow.show();
    }
    
}




Danke schonmal 🙂

mit freundlichen grüßen
Cedi
 
Zuletzt bearbeitet:
ok. probier direkt mal aus 🙂

hmm. also wenn ich die Main.java so verändere:
Java:
package gftlayoutchecker;

/**
 *
 * @author cedi
 */
public class Main {
    public static void main(String[] args) {
        MainWindow theAppWindow = new MainWindow();
        theAppWindow.setBounds(130, 160, 130, 160);
        //theAppWindow.show();
        theAppWindow.setVisible(true);
    }
    
}
macht es keinen unterschied.
 
JFrame hat standardmäßig das BorderLayout. Wenn du dann alle deine Komponenten einfach nur hinzufügst, landen die alle im CENTER-Bereich. Man kann aber beim BorderLayout immer nur 1 Komponente in 1 Bereich stecken. Da musst du wohl noch 1 JPanel mit einem anderen LayoutManager anlegen, deine Komponenten dort platzieren und dieses JPanel dann in den CENTER-Bereich im JFrame einfügen.

Ergänzung:

setVisible(true) ist beim JFrame richtig, nicht show().

Im BorderLayout bringt es dir nichts, die Komponenten mit setBounds zu bestimmen.
 
Zuletzt bearbeitet von einem Moderator:
ahh.
das klingt sehr plausiebel 🙂

wie würdest du dass dann machen?
könnte man nicht dem vorhandenen Container einen andere LayoutMannager zuordnen?
 
Zuletzt bearbeitet:
Oh seh gerade noch etwas:

du hast da geschrieben:
Java:
public void AppWindow() {

das ist eine Methode die nie aufgerufen wird. Wahrscheinlich wolltest du der Klasse einen Konstruktor spendieren, da müsstest du dann schreiben:

Java:
public MainWindow() {

Also der Konstruktor der Klasse muss so heißen wie die Klasse selbst.
 
Oh seh gerade noch etwas:

du hast da geschrieben:
Java:
public void AppWindow() {

das ist eine Methode die nie aufgerufen wird. Wahrscheinlich wolltest du der Klasse einen Konstruktor spendieren, da müsstest du dann schreiben:

Java:
public MainWindow() {

Also der Konstruktor der Klasse muss so heißen wie die Klasse selbst.

oh jeh 😀
ja 😀
oh mein gott 😀
wie konnte ich das nur übersehen 😀 sorry 😀
 
wie würdest du dass dann machen?
könnte man nicht dem vorhandenen Container einen andere LayoutMannager zuordnen?
Kommt halt immer darauf an, wie deine GUI aufgebaut sein soll. Du kannst verschiedene LayoutManager verschachteln. Je nachdem, wie du das angeordnet haben möchtest, wählst du dir den geeigneten LayoutManager.
 

Zurück
Oben