Witam,
w ramach nauki obsługi gui w Javie mam pytanie - w jaki sposób mogę modyfikować zawartość już stworzonego okna? Otóż chciałbym uzupełniać kolejne pola JTextField kolejno odczytanymi z pliku liniami.
W kodzie wygląda to tak:
// konstruktor tworzący panel z 15 polami
public Window() {
// kod trochę wyrwany z kontekstu
JPanel idPanel = new JPanel(new BorderLayout(3,3));
JPanel inIdPanel = new JPanel(new GridLayout(0,1));
JScrollPane scrollId = new JScrollPane(inIdPanel);
scrollId.setPreferredSize(new Dimension(100,250));
idPanel.add(new JLabel("Pola tekstowe"));
idPanel.add(scrollId, BorderLayout.SOUTH);
for(int i=0; i<15; i++) {
inIdPanel.add(new JTextField());
}
FlowLayout flowLayoutLg = new FlowLayout();
flowLayoutLg.setAlignment(FlowLayout.LEFT);
getContentPane().setLayout(flowLayoutLg);
JPanel jp = new JPanel();
jp.setBorder(new TitledBorder("Pola"));
jp.add(idPanel);
// przycisk do wybrania pliku
wczytaj.addActionListener(new OpenL());
dir.setEditable(false);
fileName.setEditable(false);
jp.add(wczytaj);
add(jp);
}
A tutaj klasa odczytująca plik:
class OpenL implements ActionListener {
public void actionPerformed(ActionEvent e) {
JFileChooser c = new JFileChooser();
int rVal = c.showOpenDialog(Window.this);
if(rVal == JFileChooser.APPROVE_OPTION) {
fileName.setText(c.getSelectedFile().getName());
dir.setText(c.getCurrentDirectory().toString());
String linia = null;
File plik = c.getSelectedFile();
try {
BufferedReader bufPlik = new BufferedReader(new FileReader(plik));
while( (linia = bufPlik.readLine()) != null) {
// pomocniczo wyswietlenie kolejnych linii w konsoli
System.out.println(linia);
}
} catch (Exception e1) {
e1.printStackTrace();
}
}
if(rVal == JFileChooser.CANCEL_OPTION) {
fileName.setText("ANULOWANO");
dir.setText("");
}
}
}
wszystko później uruchamiam tak:
public static void main(String[] args) {
// utworzenie okna
run(new Window(), 550, 600);
}
jak to zrobić by po wczytaniu pliku pętla:
for(int i=0; i<iloscLiniiWPliku; i++) {
inIdPanel.add(new JTextField(odczytanaLiniaZPliku));
}
spełniała swoją rolę? (tj. tworzyła odpowiednią ilość JTextField z uzupełnionym tekstem z odczytanych linii).
mam nadzieję że w miarę jasno wytłumaczyłem. proszę o pomoc.