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};
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};
JTextField[] polaTekstowe = new JTextField[] {Pole1, Pole2, Pole3, Pole4};
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]);
}
Zmienne Pole1
,... to są pola, czy tylko zadeklarowane zmienne?
JTextField Pole1;
//czy
JTextField Pole1 = new JTextField();
Myślałem, że pola wpisane od razu do tablicy.
JTextField Pole1 = new JTextField();
Zatem kod z Twojego poprzedniego postu jest poprawny. Bądź łaskaw wyjaśnić co znaczy
nie udaje się w ten sposób
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.
Ź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);
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);
}
}
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};
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?
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());
}
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.