Pola tekstowe i tablice

0

W jaki sposób dodać pola tekstowe i ustawić ich położenie, wykorzystując tablice? Żeby nie dodawać każdego pola osobno.
Mam np. cztery pola.

JTextField[] polaTekstowe = {Pole1, Pole2, Pole3, Pole4};
0
JTextField[] polaTekstowe = new JTextField[] {Pole1, Pole2, Pole3, Pole4};
0

Dlaczego nie udaje się w ten sposób? Co robię źle?

JTextField[] polaTekstowe = new JTextField[] {Pole1, Pole2, Pole3, Pole4};
	
for(int i=0;i<4;i++)
{
   polaTekstowe[i].setBounds(50+200*i,50,150,30);
   add(polaTekstowe[i]);
}
0

Zmienne Pole1,... to są pola, czy tylko zadeklarowane zmienne?

JTextField Pole1;
//czy
JTextField Pole1 = new JTextField();
0

Myślałem, że pola wpisane od razu do tablicy.

JTextField Pole1 = new JTextField();
0

Zatem kod z Twojego poprzedniego postu jest poprawny. Bądź łaskaw wyjaśnić co znaczy

nie udaje się w ten sposób

0

Wydaje mi się, że utworzyłem cztery pola tekstowe i dodałem je do tablicy o nazwie polaTekstowe. Następnie w pętli for określiłem zmienną pozycji od zera do trzech, z każdym obiegiem pętli zwiększając ją o jeden. W nawiasach - ustawiam położenie każdej pozycji z tablicy, czyli położenie pola tekstowego. 200*i jest po to, aby pola układały się w poziomie obok siebie. Na koniec poszczególne pozycje tablicy (czyli Pola) dodaję do okienka.
Przynajmniej tak mi się wydawało.

0

Źle zrozumiałem Twój poprzedni post. Nie udaje się bo wywala mi błąd przy próbie uruchomienia, dotyczący linii:

polaTekstowe[i].setBounds(50+200*i,50,150,30);
0

Wstawiam cały kod.

public class Test extends JFrame 
{
	JTextField[] polaTekstowe;
	JTextField Pole1, Pole2, Pole3, Pole4;
	static JTextArea notatnik;
	
	public Test()
	{			
		setSize(1000,500);
		setTitle("Test pól");
		setLayout(null);
		
		notatnik = new JTextArea();
		JScrollPane scrollPane = new JScrollPane(notatnik);
		scrollPane.setBounds(100,150,600,200);
		add(scrollPane);	
					
		JTextField[] polaTekstowe = new JTextField[] {Pole1, Pole2, Pole3, Pole4};
		
		for(int i=0;i<4;i++)
		{
		    polaTekstowe[i].setBounds(50+200*i,50,150,30);
		    add(polaTekstowe[i]);
		}	
	}
	
	public static void main(String[] args) throws IOException 
	{
		Test aplikacja = new Test();
		aplikacja.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		aplikacja.setExtendedState(JFrame.MAXIMIZED_BOTH);
		aplikacja.setVisible(true);		
	}	
}
2
        JTextField[] polaTekstowe = new JTextField[] {Pole1, Pole2, Pole3, Pole4};
 

Tutaj zainicjalizowałeś tylko czteroelementową tablicę typu JTextField, której elementami są jedynie puste referencje. Musisz jeszcze zainicjalizować obiekty dla tych pustych referencji, tj.:

JTextField[] polaTekstowe = new JTextField[4];
for (int i = 0; i < 4; i++) {
    JTextField poleTekstowe = new JTextField();
    polaTekstowe[i] = poleTekstowe;
}

lub

private JTextField Pole1, Pole2, Pole3, Pole4;

...

Pole1 = new JTextField();
Pole2 = new JTextField();
Pole3 = new JTextField();
Pole4 = new JTextField();
JTextField[] polaTekstowe = new JTextField[] {Pole1, Pole2, Pole3, Pole4};
0

Dzięki. Mam jeszcze pytanie odnośnie Twojego pierwszego przykładu. W tym przykładzie pola nie będą miały swojej nazwy, tzn. Pole1, Pole2 itd., a będzie mi potrzebna indywidualna nazwa każdego pola. Jest jakiś sposób, żeby ją miały?

0

Nie. Możesz odnosić się do indeksów tablicy. Jeżeli jednak chcesz koniecznie przypisać jakiś tekst do danego pola tekstowego, to możesz skorzystać z obiektu klasy HashMap, np.:

Map<String, JTextField> map = new HashMap<String, JTextField>();
for (int i = 1; i <= 4; i++) {
    map.put("Pole" + i, new JTextField());
}
0
Pijany Kot napisał(a):

... W tym przykładzie pola nie będą miały swojej nazwy, tzn. Pole1, Pole2 itd. ...
Jak to nie jak tak: polaTekstowe[0], polaTekstowe[1] itd.

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