Mały - duży problem

0

Cześć,
mam problem z utworzeniem ramki JFrame. Tzn. ramka się tworzy ale składniki nie dodają się.
Nie wiem o co chodzi. Uczę się Javy od ponad miesiąca i dobrze mi idzie aż do wczoraj.
Ogólnie jestem w trakcie pisania małej aplikacji dla koleżanki chemiczki i wszystko śmiga.
Ale potrzebowałem przetestować obliczenia na double'ach wiec chciałem napisać prosty
prog. z JButtonem, JTextField i JLabel.

Myślałem że wiem jak to zrobić. Próbowałem na różne sposoby ale nie dało się.
Wszystko się kompiluje ale składniki nie dodają się do panelu. Także wymiary nie zgadzaja się.
W końcu wkurzyłem się i przepisałem przykład z książki i jest to samo.
Nie wiem o co chodzi.
przykład ksiażkowy kompilujący się ale nie działający poprawnie:

import javax.swing.*;

public class Test extends JFrame{

    JButton A = new JButton("OK");

    public void Test(){

        setSize(100,100);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JPanel panel = new JPanel();
        panel.add(A);
        setContentPane(panel);
    }

    public static void main(String[] args){

        Test prog = new Test();
        prog.show();
    }
}

Dodam że poprzednio utworzone prog. wyświetlaja się poprawnie.

Pominę komunikat o błędzie "call to super must be first statement in constructor" WTF? Dlatego go nie ma.

No i nie ZAMYKA się aplikacja pomimo JFrame.EXIT_ON_CLOSE

POMÓŻCIE.

0

import javax.swing.*;

public class Test extends JFrame{

        JButton A = new JButton("OK");

        public Test(){//tu nie ma void to jest konstruktor

                setSize(100,100);
                setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                JPanel panel = new JPanel();
                panel.add(A);
                setContentPane(panel);
        }

        public static void main(String[] args){

                Test prog = new Test();
                prog.setVisible(true);//show() jest przestarzałe zamien na setVisible()
        }
}
0

To

public void Test()
nie jest konstruktor. Usuń słowo void.

0

Usunąłem i to samo - usunąłem jeszcze przed waszymi odp. bo tez myslałem że to problem ale to samo.

0

No bez kitu działa po zmianie na setVisible(); i usunięciu 'void' ale to dziwne bo jeszcze jakis czas temu działało z show(); No przysięgam: ) (może mi się wydaje)

Dzięki - pomogliście.

Ale też w książce napisane jest że kiedy metoda nie zwraca wartości to trzeba podać typ czyli void. Dobrze gadam ? więc czemu przeszkadza ?

0

public void Test() jest zwykłą metodą (niczego nie zwracającą), public Test() jest konstruktorem w klasie Test. U Ciebie nie było żadnego konstruktora więc kompilator wygenerował kompilator domyślny.

0

To by było zrozumiałe dla mnie - dzięki.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0