Swing Problem mit JFrame



  • Hi, kann mir jemand sagen, warum in meinem JFrame nichts angezeigt wird (sprich, die Aufrufe von this.getContentPane().add(...) nichts machen) ??

    public class MyFrame extends JFrame {
        int i = 1;
        JButton inc, dec;
        JLabel l1;
    
        public MyFrame() {
            super("Fenster");
    
            this.getContentPane().setLayout(null);
            this.setSize(300,200);
            l1 = new JLabel("1");
            l1.setLocation(30, 30);
            inc = new JButton("inc");
            inc.setLocation(30, 100);
            dec = new JButton("dec");
            dec.setLocation(100, 100);
    
            MouseListener mouse = new MouseAdapter() {
                public void mouseClicked(MouseEvent e) {
                    JButton b = (JButton)e.getSource();
                    if(b == inc) {
                        i++;
                        l1.setText(String.valueOf(i));
                    }
                    else if(b == dec) {
                        i--;
                        l1.setText(String.valueOf(i));
                    }
                }
            };
    
            inc.addMouseListener(mouse);
            dec.addMouseListener(mouse);
            this.getContentPane().add(l1);
            this.getContentPane().add(inc);
            this.getContentPane().add(dec);
    
            this.setVisible(true);
        }
    
        public static void main(String[] args) {
            MyFrame f = new MyFrame();
        }
    }
    

    Danke



  • Hat sich erledigt.
    Bei nem null-LayoutManager muss man wohl für jede hinzugefügte Komponente explizit die Größe setzen 🙂



  • das "this." vornedran kannste eigentlich immer weglassen - wird der code etwas kürzer 😉



  • fit schrieb:

    das "this." vornedran kannste eigentlich immer weglassen - wird der code etwas kürzer 😉

    hat aber durchaus was sprachlich nettes finde ich, mach ich auch gerne 🙂

    this.setSize verdeutlicht einfach besser was man macht anstatt setSize.


Anmelden zum Antworten