Dodawanie elementów do panela

Odpowiedz Nowy wątek
2010-02-01 21:13
0

Witam dopiero zaczynam odświeżać sobie podstawy GUI w javie i mam problem. Napisałem sobie prościutki program z panelem, ale mam błędy podaczas próby dodania do niego pola tekstowego, oraz podczas dodania panelu do powZawartości. Dlaczego?

import java.awt.;
import java.awt.event.
;
import javax.swing.;
import javax.swing.event.
;

public class panelTest {

public static class TestPanela extends JFrame{
    Container powZawartosci = getContentPane();
    JPanel panel = new JPanel();
    JTextField poleTekstowe = new JTextField("TestPanelu", 20);
    panel.add(poleTekstowe);
    powZawartosci.add(panel);
}

 public static void main(String[] atgs) {                
     new TestPanela();

}
}

Pozostało 580 znaków

2010-02-01 21:44
0

Jakie błędy?

Pozostało 580 znaków

2010-02-01 21:51
0

Przy kropce w panel.add(poleTekstowe) mam "Syntax error on token(s), misplaced construct(s)". To samo przy powZawartosci.add(panel);.

Pozostało 580 znaków

2010-02-01 21:53
0

Błędy są dlatego, że te instrukcje muszą być w jakiejś metodzie, albo w konstruktorze, a tu są na poziomie deklaracji. Ten kod można by poprawić tak, żeby się kompilował przez dodanie konstruktora:

public static class TestPanela extends JFrame{
            TestPanela(){
                Container powZawartosci = getContentPane();
                JPanel panel = new JPanel();
                JTextField poleTekstowe = new JTextField("TestPanelu", 20);
                panel.add(poleTekstowe);
                powZawartosci.add(panel);
            }
        }

Teraz się skompiluje, ale działać nie będzie. Proponuję poczytać jakiś tutorial na temat Swinga, na stronach Sun (Oracle) jest to całkiem przyzwoicie opisane.

Pozostało 580 znaków

2010-02-01 22:08
0

Ok, poprawiłem. Ale teraz mam nowy błąd.

import java.awt.*;
import javax.swing.*;

public class panelTest {

     class TestPanela extends JFrame{
         public TestPanela(){
                Container powZawartosci = getContentPane();
                JPanel panel = new JPanel();
                JTextField poleTekstowe = new JTextField("TestPanela", 20);
                panel.add(poleTekstowe);
                powZawartosci.add(panel);
                }
            }

    public static void main(String[] atgs) {                
         TestPanela test = new TestPanela();
         test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 }
}

W momencie gdy wywołyję "TestPanela test = new TestPanela();". O co chodzi tym razem?

Pozostało 580 znaków

2010-02-01 23:19
0

TestPanela jest tu klasą wewnętrzną, która wymaga do utworzenia swojego obiektu obiektu klasy obejmującej czyli PanelTest. Rozwiązaniem tego problemu jest albo wyprowadzenie TestPanela poza klasę PanelTest, albo dodanie do niej (TestPanela) modyfikatora static, który "oderwie" klasę TestPanela od klasy obejmującej.
Poza tym aby coś zobaczyć brakuje Ci na końcu jeszcze instrukcji test.setVisible(true);


Jeżeli ktoś komuś coś, ewentualnie nikt nikomu nic, to właściwie po co...?

Pozostało 580 znaków

2010-02-02 19:03
0

Dzięki wielkie za pomoc.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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