Tak właśnie kombinowałem, ale w momencie jak dodawałem dane z tablicy, nie odświeżała mi się lista. Innymi słowy nazwisko po naciśnięciu enteru pojawiało się w tablicy (bo ją wyprowadziłem na konsolę aby widzieć co się dzieje), ale nie pojawiało się na JList.
Bez sortowania to wyglądało tak. Z sortowaniem tablicy bym sobie poradził ale niech najpierw ta tablica pojawi się na liście.
Kopiuj
public class JLista extends JFrame implements ActionListener{
//String[] items = { "one", "two", "three", "four", "five" };
ArrayList<String> tablica = new ArrayList<String>();
JList list=new JList();
JTextField jText = new JTextField();
public JLista(){
JPanel PanelGorny = new JPanel();
PanelGorny.setLayout(new GridLayout(1,1));
PanelGorny.add(jText);
jText.addKeyListener(new KeyListener() {
@Override
public void keyPressed(KeyEvent e) {
// TODO Auto-generated method stub
int key = e.getKeyCode();
if ((key == KeyEvent.VK_ENTER))
{
String a=jText.getText();
tablica.add(a);
jText.setText("");
System.out.println(tablica);
}
}
@Override
public void keyReleased(KeyEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void keyTyped(KeyEvent arg0) {
// TODO Auto-generated method stub
}
});
JPanel Glowny =new JPanel();
Glowny.setLayout(new BorderLayout());
Glowny.add(PanelGorny, BorderLayout.NORTH);
Glowny.add(list);
add(Glowny);
}
public static void
run(final JFrame f, final int width, final int height) {
SwingUtilities.invokeLater(new Runnable(){
public void run(){
f.setTitle("Lista");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(width,height);
f.setVisible(true);
}
});
}
public static void main(String[] args){
run(new JLista(), 250, 250);
}
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
}
}