Witam.
Chciałbym aby mój program po wciśnięciu JButtona pobierał z z listy wybraną wcześniej liczbę, a następnie generował nowe komponenty (JTextField) w ilości równej tej liczbie. (Później jeszcze będę chciał pobierać z tych pól wpisane wartości ale na razie to pomijam).
Javę konsumuję dopiero od ok miesiąca, także proszę o wyrozumiałość i nie krytykowanie mnie:)
Wszystko zjadam na platformie ECLIPSE( jeśli to ma jakieś znaczenie).
Mam taki oto kod i brakuje mi pomysłu jak zrobić coś takiego jak opisałem wyżej(chcę aby te nowe JTextField'y pojawiały się w panelu 2):
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.applet.*;
import java.awt.event.ActionListener;
public class wykres extends JApplet implements ActionListener {
JButton guzik;
JComboBox lista;
JPanel panel1, panel2;
JLabel napis;
public void init()
{
this.setSize(700,700);
this.setLayout(null);
panel1 = new JPanel();
this.add(panel1);
napis = new JLabel("Ile wartości wprowadzić? ");
panel1.add(napis);
panel2 = new JPanel();
panel1.add(panel2);
guzik = new JButton("ok");
guzik.addActionListener(this);
panel1.add(guzik);
lista = new JComboBox();
lista.setEditable(false);
lista.addItem(2);
lista.addItem(3);
lista.addItem(4);
lista.addItem(5);
lista.addItem(6);
panel1.add(lista);
}
public void actionPerformed(ActionEvent e)
{
if (e.getSource() == guzik)
{
int x =(int) lista.getSelectedIndex();
int x1 = x+2;
panel2.removeAll();
for (int i=1;i<=x1;i++)
{
panel2.add(new JLabel("Wartość "+i+":"));
panel2.add(new JTextField(4));
} panel2.revalidate();
}
}
public void paint(Graphics g)
{
guzik.setBounds(60,30,50,25);
lista.setBounds(20, 30, 35, 25);
napis.setLocation(10, 10);
panel1.setLayout(null);
panel1.setBounds(0, 0, 700, 700);
panel1.setBackground(Color.LIGHT_GRAY);
panel2.setBounds(500, 25, 150, 400);
panel2.setBackground(Color.GRAY);
super.paint(g);
}
}
EDIT:
Problem mam po części rozwiązany: robią mi się dynamicznie JTextField'y(dodałem nowy kod do akcji guzika) ale mam za to kolejny problem: używam validate() aby po zmianie liczby na liście i ponownym kliknięciu w "ok" wszystkie komponenty z panelu 2 znikały i pojawiały się od nowa. Efekt jest taki że wszystkie komponenty znikają ale ich zanik polega na tym że nie mogę w polach wpisać ale nadal je widzę. (znikają dopiero jak rozciągam sobie okienko).
Nie wiem też jak dodać etykiety do każdego tekstfield'a abym później mógł z nich pobierać dane:(