Witam.
JScrollBar nie przewija mi JPanelu gdy klikam w przycisk "Dodaj" tylko stoi nieruchomo i ma długość taką jak podana w panel.setPreferredSize();
Proszę o jakąkolwiek pomoc, gdyż siedzę już nad tym parę dobrych godzin...
import java.awt.Color;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import javax.swing.*;
public class JPanels extends JFrame {
private JTextField miejsce[] = new JTextField[4]; // zakladamy na poczatku
// 4 pola
private JLabel lMiejsce[] = new JLabel[4];
private JTextField tImie, tNazwisko;
private JButton bDodaj, bZapisz;
private JLabel lImie, lNazwisko;
private int i = 1;
private int wDolLabel = 40;
private int wDolText = 40;
private JPanel panel;
public JPanels() {
initializeUI();
}
private void initializeUI() {
setSize(450, 450);
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
panel = new JPanel(null);
panel.setPreferredSize(new Dimension(400, 480));
JScrollPane scrollBar = new JScrollPane(panel);
lImie = new JLabel("Imię");
lImie.setBounds(45, 10, 50, 40);
lNazwisko = new JLabel("Nazwisko");
lNazwisko.setBounds(185, 10, 80, 40);
tImie = new JTextField();
tImie.setBounds(10, 40, 100, 20);
tNazwisko = new JTextField();
tNazwisko.setBounds(130, 40, 160, 20);
bDodaj = new JButton("Dodaj");
bDodaj.setBounds(320, 35, 80, 30);
bDodaj.addActionListener(aDodaj);
bZapisz = new JButton("Zapisz");
bZapisz.setBounds(320, 85, 80, 30);
bZapisz.addActionListener(aZapisz);
lMiejsce[0] = new JLabel("Miejsce pracy nr 1");
lMiejsce[0].setBounds(100, 80, 200, 20);
miejsce[0] = new JTextField();
miejsce[0].setBounds(10, 100, 290, 20);
panel.add(lImie);
panel.add(lNazwisko);
panel.add(tImie);
panel.add(tNazwisko);
panel.add(bDodaj);
panel.add(bZapisz);
panel.add(lMiejsce[0]);
panel.add(miejsce[0]);
setContentPane(scrollBar);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new JPanels().setVisible(true);
}
});
}
private static Object resizeArray(Object oldArray, int newSize) {
int oldSize = java.lang.reflect.Array.getLength(oldArray);
Class elementType = oldArray.getClass().getComponentType();
Object newArray = java.lang.reflect.Array.newInstance(elementType,
newSize);
int preserveLength = Math.min(oldSize, newSize);
if (preserveLength > 0)
System.arraycopy(oldArray, 0, newArray, 0, preserveLength);
return newArray;
}
private ActionListener aDodaj = new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (i % 4 == 0) {
lMiejsce = (JLabel[]) resizeArray(lMiejsce, i * 2);
miejsce = (JTextField[]) resizeArray(miejsce, i * 2);
}
lMiejsce[i] = new JLabel("Miejsce pracy nr " + (i + 1));
lMiejsce[i].setBounds(100, lMiejsce[i - 1].getY() + wDolLabel, 200, 20);
panel.add(lMiejsce[i]);
miejsce[i] = new JTextField();
miejsce[i].setBounds(10, miejsce[i - 1].getY() + wDolText, 290, 20);
panel.add(miejsce[i]);
panel.repaint();
i++;
}
};
private ActionListener aZapisz = new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println(":D");
PrintWriter zapis;
try {
zapis = new PrintWriter(new FileWriter(new File("pracownicy.txt"), true));
for (int j=0; j< i;j++){
zapis.println(tImie.getText()+" "+tNazwisko.getText());
zapis.println(miejsce[j].getText());
zapis.println("\n");
}
zapis.close();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
};
}