.add() von Objekten in meiner GUI nicht sichtbar

Status
Nicht offen für weitere Antworten.

T_Wolf

Mitglied
Also ich habe folgendes Problem, ich habe mir mit einem Hilfprogramm eine nette GUI gebaut (allemöglichen Fenster an den richtigen Stellen).
Nun soll ein Graph angezeigt werden , -> klappt nicht
Ich hab es mit einem Bild versucht -> nichtmal das klappt
Also ist der Fehler irgendwo in der Anzeige und ich suche Ihn jetzt schon seit Tagen und komme auf keinen grünen Zweig!
Bitte helft mir 🙂
(ist warscheinlich was absolut einfaches ich komme nur nicht drauf)

Gruss Thomas




Relevante Codestelle:
Java:
        panel_1 = new JScrollPane();
        getContentPane().add(panel_1);
	JLabel lab = new JLabel(new ImageIcon("Fermenter.gif"));
        panel_1.add(lab);


Gesamter Code:
Java:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class GUI extends JFrame {
	JScrollPane panel_1;
    JLabel Titel;
    JComboBox combobox_2;
    JButton Start;
    JButton Stop;
    JButton button_3;
    JButton button_5;
    JTextField textfield_3;
    JTextField textfield_5;
    JButton button_7;
    JTextField textfield_7;
    JButton button_9;
    JTextField textfield_9;
    JButton button_11;
    JTextField textfield_11;
    JButton button_12;
    JTextField textfield_12;
    JButton button_14;
    JTextField textfield_14;
    JButton button_15;
    JTextField textfield_15;
    JButton button_16;
    JButton button_17;
    JButton button_18;
    JTextField textfield_16;
    JButton button_19;

    public GUI() {
        GUILayout customLayout = new GUILayout();

        getContentPane().setFont(new Font("Helvetica", Font.PLAIN, 12));
        getContentPane().setLayout(customLayout);

        panel_1 = new JScrollPane();
        getContentPane().add(panel_1);
	JLabel lab = new JLabel(new ImageIcon("Fermenter.gif"));
        panel_1.add(lab);

	    
        Titel = new JLabel("Fermentersimulation");
        getContentPane().add(Titel);

        combobox_2 = new JComboBox();
        combobox_2.addItem("Temperatur");
        combobox_2.addItem("Kühlung");
        combobox_2.addItem("Ph-Wert");
        combobox_2.addItem("Rührerdrehzahl");
        combobox_2.addItem("Bakterienanzahl");
        getContentPane().add(combobox_2);

        Start = new JButton("Simulation stopen");
        getContentPane().add(Start);

        Stop = new JButton("Simulation beenden");
        getContentPane().add(Stop);

        button_3 = new JButton("Temperatur:");
        getContentPane().add(button_3);

        button_5 = new JButton("Kühlung:");
        getContentPane().add(button_5);

        textfield_3 = new JTextField("37");
        getContentPane().add(textfield_3);

        textfield_5 = new JTextField("0");
        getContentPane().add(textfield_5);

        button_7 = new JButton("button_7");
        getContentPane().add(button_7);

        textfield_7 = new JTextField("textfield_7");
        getContentPane().add(textfield_7);

        button_9 = new JButton("button_9");
        getContentPane().add(button_9);

        textfield_9 = new JTextField("textfield_9");
        getContentPane().add(textfield_9);

        button_11 = new JButton("button_11");
        getContentPane().add(button_11);

        textfield_11 = new JTextField("textfield_11");
        getContentPane().add(textfield_11);

        button_12 = new JButton("button_12");
        getContentPane().add(button_12);

        textfield_12 = new JTextField("textfield_12");
        getContentPane().add(textfield_12);

        button_14 = new JButton("button_14");
        getContentPane().add(button_14);

        textfield_14 = new JTextField("textfield_14");
        getContentPane().add(textfield_14);

        button_15 = new JButton("Datenbank:");
        getContentPane().add(button_15);

        textfield_15 = new JTextField("ferm");
        getContentPane().add(textfield_15);

        button_16 = new JButton("Simulation starten");
        getContentPane().add(button_16);

        button_17 = new JButton("Datenfelder updaten");
        getContentPane().add(button_17);

        button_18 = new JButton("Maximale Laufzyklen:");
        getContentPane().add(button_18);

        textfield_16 = new JTextField("10000");
        getContentPane().add(textfield_16);

        button_19 = new JButton("Fermenter initialisieren");
        getContentPane().add(button_19);

        setSize(getPreferredSize());

        addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });
    }

    public static void main(String args[]) {
        GUI window = new GUI();
              
        window.setTitle("Fermenter");
        window.pack();
        window.show();
    }
}

class GUILayout implements LayoutManager {

    public GUILayout() {
    }

    public void addLayoutComponent(String name, Component comp) {
    }

    public void removeLayoutComponent(Component comp) {
    }

    public Dimension preferredLayoutSize(Container parent) {
        Dimension dim = new Dimension(0, 0);

        Insets insets = parent.getInsets();
        dim.width = 900 + insets.left + insets.right;
        dim.height = 700 + insets.top + insets.bottom;

        return dim;
    }

    public Dimension minimumLayoutSize(Container parent) {
        Dimension dim = new Dimension(0, 0);
        return dim;
    }

    public void layoutContainer(Container parent) {
        Insets insets = parent.getInsets();

        Component c;
        c = parent.getComponent(0);
        if (c.isVisible()) {c.setBounds(insets.left+0,insets.top+32,704,544);}
        c = parent.getComponent(1);
        if (c.isVisible()) {c.setBounds(insets.left+256,insets.top+0,160,32);}
        c = parent.getComponent(2);
        if (c.isVisible()) {c.setBounds(insets.left+704,insets.top+32,184,32);}
        c = parent.getComponent(3);
        if (c.isVisible()) {c.setBounds(insets.left+704,insets.top+640,184,32);}
        c = parent.getComponent(4);
        if (c.isVisible()) {c.setBounds(insets.left+704,insets.top+672,184,32);}
        c = parent.getComponent(5);
        if (c.isVisible()) {c.setBounds(insets.left+0,insets.top+576,144,24);}
        c = parent.getComponent(6);
        if (c.isVisible()) {c.setBounds(insets.left+144,insets.top+576,144,24);}
        c = parent.getComponent(7);
        if (c.isVisible()) {c.setBounds(insets.left+0,insets.top+600,144,24);}
        c = parent.getComponent(8);
        if (c.isVisible()) {c.setBounds(insets.left+144,insets.top+600,144,24);}
        c = parent.getComponent(9);
        if (c.isVisible()) {c.setBounds(insets.left+288,insets.top+576,144,24);}
        c = parent.getComponent(10);
        if (c.isVisible()) {c.setBounds(insets.left+288,insets.top+600,144,24);}
        c = parent.getComponent(11);
        if (c.isVisible()) {c.setBounds(insets.left+432,insets.top+576,144,24);}
        c = parent.getComponent(12);
        if (c.isVisible()) {c.setBounds(insets.left+432,insets.top+600,144,24);}
        c = parent.getComponent(13);
        if (c.isVisible()) {c.setBounds(insets.left+576,insets.top+576,128,24);}
        c = parent.getComponent(14);
        if (c.isVisible()) {c.setBounds(insets.left+576,insets.top+600,128,24);}
        c = parent.getComponent(15);
        if (c.isVisible()) {c.setBounds(insets.left+0,insets.top+624,144,24);}
        c = parent.getComponent(16);
        if (c.isVisible()) {c.setBounds(insets.left+0,insets.top+648,144,24);}
        c = parent.getComponent(17);
        if (c.isVisible()) {c.setBounds(insets.left+144,insets.top+624,144,24);}
        c = parent.getComponent(18);
        if (c.isVisible()) {c.setBounds(insets.left+144,insets.top+648,144,24);}
        c = parent.getComponent(19);
        if (c.isVisible()) {c.setBounds(insets.left+704,insets.top+288,184,24);}
        c = parent.getComponent(20);
        if (c.isVisible()) {c.setBounds(insets.left+704,insets.top+312,184,24);}
        c = parent.getComponent(21);
        if (c.isVisible()) {c.setBounds(insets.left+704,insets.top+608,184,32);}
        c = parent.getComponent(22);
        if (c.isVisible()) {c.setBounds(insets.left+704,insets.top+576,184,32);}
        c = parent.getComponent(23);
        if (c.isVisible()) {c.setBounds(insets.left+704,insets.top+336,184,24);}
        c = parent.getComponent(24);
        if (c.isVisible()) {c.setBounds(insets.left+704,insets.top+360,184,24);}
        c = parent.getComponent(25);
        if (c.isVisible()) {c.setBounds(insets.left+704,insets.top+544,184,32);}
    }
}
 
So weit ich weiß, kann man auf einen JFrame nur 1 Object hinzufügen.
Aus diesem Grund, solltest du erst alle deine Objecte in ein JPanel stecken und dieses anschließend dem Frame hinzufügen.

Noch ein kleiner Tipp, solltest du java 1.6 benutzen, kannst du dir das ..getContentPane() sparen und direkt add(...) aufrufen.
 
Java:
 panel_1 = new JScrollPane();
        getContentPane().add(panel_1);
    JLabel lab = new JLabel(new ImageIcon("Fermenter.gif"));
        panel_1.add(lab);
Wenn du eine Scrollpane benutzt musst du
Code:
setViewport()
machen, bzw. über den Konstruktor:
Java:
JLabel lab = new JLabel(new ImageIcon("Fermenter.gif"));
getContentPane().add( new JScrollPane( lab ) );

Und:
So weit ich weiß, kann man auf einen JFrame nur 1 Object hinzufügen.
...das hängt ganz vom verwendeten LayoutManager ab.
 
Java:
              panel_1.add(lab);
muss lauten:
Java:
panel_1.setViewportView(lab);
Ansonsten finde ich das mit Deinem LayoutManager recht kritisch. Solltest eher versuchen mehrere Komponenten ineinander zu verschachteln. Mit den festen Größenvorgaben ist die Darstellung der GUI immer von der verwendeten Auflösung abhängig.
 
Java:
 panel_1 = new JScrollPane();
        getContentPane().add(panel_1);
    JLabel lab = new JLabel(new ImageIcon("Fermenter.gif"));
        panel_1.add(lab);
Wenn du eine Scrollpane benutzt musst du
Code:
setViewport()
machen, bzw. über den Konstruktor:
Java:
JLabel lab = new JLabel(new ImageIcon("Fermenter.gif"));
getContentPane().add( new JScrollPane( lab ) );

Und:

...das hängt ganz vom verwendeten LayoutManager ab.
Super danke 🙂 mit dem Kommando geht es 🙂

Was das GUI angeht wie bekomme ich ansonsten eine gut Strukturierte Oberfläche wo alles da ist wo es sein soll ? Wenn ich nicht die koordinaten angeben kann ?
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben