problem z GridBagConstrains

0

Dlaczego nie widzi mi metody add?

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

public class Test
{
	public static void main(String[] args) 
	{
		Ramka ramka = new Ramka();
		ramka.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		ramka.setVisible(true);
	}
}

class Ramka extends JFrame
{
	public Ramka()
	{
		setTitle("Test");
		setSize(700,550);
		setResizable(false);
		setLocation(50,50);

		Panelek panelek = new Panelek();
		Container zawartosc = getContentPane();
		zawartosc.add(panelek);
	}
}

class Panelek extends JPanel
{
	public Panelek()
	{
		Lista lista = new Lista();

		GridBagConstraints wytyczne = new GridBagConstraints();
		wytyczne.fill = GridBagConstraints.NONE;
        wytyczne.anchor = GridBagConstraints.EAST;
        wytyczne.weightx = 0;
        wytyczne.weighty = 0;

		add(lista,wytyczne,1,1,1,1);
	}
	public void add(Component k, GridBagConstraints wytyczne,int x, int y, int s, int w)
   {  
      wytyczne.gridx = x;
      wytyczne.gridy = y;
      wytyczne.gridwidth = s;
      wytyczne.gridheight = w;
      add(k, wytyczne);
   }
	public void paintComponent(Graphics g)
	{
		super.paintComponent(g);
		g.drawString("hejka ",20,20);
	}
}

class Lista
{
	public Lista()
	{
		lista = new JComboBox();
		lista.setEditable(false);

		lista.addItem("jeden");
		lista.addItem("dwa");
		lista.addItem("trzy");
		lista.addItem("cztery");
	}
	JComboBox lista;
}

chce wszystkie komponenty dodac do klasy Panelek a dopiero potem zawartosc Panelek dodac do klasy Ramka. W zalozenaich w ten sposub powinno sie wyświetlic zawartosc komponentów w klasie Panelek. jednak wywala mi bład:

Test.java cannot find symbol
symbol : method add(Lista,java.awt.GridBagConstraints,int,int,int,int)
location: class Panelek
add(lista,wytyczne,1,1,1,1);

możecie mi pomóc? Wg. mnie powinno działać i nie moge sie doszukac przyczyny błędu. Podejzewam ze to jakis banał ale miałem dłuższą przerwe w javie i potrzebuje pomocy.

0
class Lista extends JComboBox
{
	public Lista()
	{
		super();
		setEditable(false);
		addItem("jeden");
		addItem("dwa");
		addItem("trzy");
		addItem("cztery");
	}
}
samos napisał(a)

Test.java cannot find symbol
symbol : method add(Lista,java.awt.GridBagConstraints,int,int,int,int)
location: class Panelek
add(lista,wytyczne,1,1,1,1);

Nie działa bo Java nie może znaleźć metody add odwołującej się do obiektu klasy Lista, zapomniałeś o dziedziczeniu w deklaracji klasy

0

No teraz błedu nie wywala ale i tak źle działa. Mianowicie wyświetla mi liste wyboru, ale jest ona pusta. Nie ma opcji: jeden dwa trzy cztery:(. Jezeli stworze liste wyboru w konstruktorze Panelku to wszystko działa.

// mineło kilkanaście minut:):
zrobiłem tak:

class Lista extends JPanel // dziedziczy po JPanel a nie po JComboBox
{
public Lista()
{
setLayout(new BorderLayout());//"wewnętrzny układ"
lista = new JComboBox();
lista.setEditable(true);

	lista.addItem("jeden");
	lista.addItem("dwa");
	lista.addItem("trzy");
	lista.addItem("cztery");
	add(lista);// dodanie komponentu do ukłądu
}
JComboBox lista;

}
Myśl jest taka, ze kazdy komponent wkładam do wewnetrznego ukłądu a nastepnie układ ten wstawiam to głównego ukladu GridBagConstraints wytyczne
Czy to jest dobre rozwiazanie, czy powinno sie zrobić jakoś inaczej? I czy w ten sposób bede mówglzmieniac zawartosc JComboBox lista w czasie dzialąnia programu(oczywiście wywołująć odpowiednia metode)?

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