Dodawanie elementów do panela

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();

}
}

0

Jakie błędy?

0

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

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.

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?

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);

0

Dzięki wielkie za pomoc.

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