Witam, dopiero uczę się programowania i chciałem zrobić prosty telefon z wykorzystaniem GUI, lecz napotykam na przeszkodę, otóż moja lista nie odświeża się tak jak chciałbym. Nie wiem jak ten problem rozwiązać. I jeszcze jedna kwestia, jak przekazuje ArrayList z obiektami to czy da się przekazywać od razu wartośc poszczególnych obiektów, bo jak na razie wypisuje obiekty, ale "zakodowane".
package projektjavacezary;
import javax.swing.*;
import java.awt.*;
import java.util.*;
public class ProjektJavaCezary {
private JFrame jFrameMain;
private JButton jButtonZadzwon, jButtonPisz, jButtonDodaj, jButtonUsun,
jButtonModyfikuj, jButtonZadzwonNumer;
private JPanel jPanelMain;
private JList<Kontakty> jListBazaKontaktow;
private JTextField jTextFieldNumer;
private ArrayList<Kontakty> kontakty;
private JScrollPane jScrollPaneKontakty;
ProjektJavaCezary() {
jFrameMain = new JFrame("Telefon Komórkowy");
jFrameMain.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jFrameMain.setSize(400, 500);
jFrameMain.setResizable(false);
jFrameMain.setLayout(new FlowLayout());
kontakty = new ArrayList<Kontakty>();
Kontakty kontakt = new Kontakty("Jan", "53532");
kontakty.add(kontakt);
kontakt = new Kontakty("piotr,", "Adam:");
kontakty.add(kontakt);
jPanelMain = new JPanel(null);
jButtonDodaj = new JButton("Dodaj Kontakt");
jButtonZadzwon = new JButton("Zadzwoń");
jButtonUsun = new JButton("Usuń Kontakt");
jButtonModyfikuj = new JButton("Modyfikuj Kontakt");
jButtonZadzwonNumer = new JButton("Zadzwon pod podany numer");
jButtonPisz = new JButton("SMS");
jTextFieldNumer = new JTextField(15);
jListBazaKontaktow = new JList(kontakty.toArray());
jListBazaKontaktow.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
jScrollPaneKontakty = new JScrollPane(jListBazaKontaktow);
jScrollPaneKontakty.setPreferredSize(new Dimension(120, 100));
jScrollPaneKontakty.setBounds(10, 50, 200, 200);
jButtonDodaj.setBounds(225, 50, 150, 50);
jButtonZadzwon.setBounds(225, 100, 150, 50);
jButtonUsun.setBounds(225, 150, 150, 50);
jButtonModyfikuj.setBounds(225, 200, 150, 50);
jButtonPisz.setBounds(225, 250, 150, 50);
jButtonZadzwonNumer.setBounds(200, 350, 200, 50);
jTextFieldNumer.setBounds(225, 310, 150, 30);
jButtonDodaj.addActionListener(new ActionListenerDodajKontakt(jListBazaKontaktow,
jPanelMain, jFrameMain, kontakty, jScrollPaneKontakty));
jButtonDodaj.addActionListener(new ActionListenerUsunKontakt(kontakty,
jListBazaKontaktow, jScrollPaneKontakty));
jPanelMain.add(jButtonDodaj);
jPanelMain.add(jButtonZadzwon);
jPanelMain.add(jButtonUsun);
jPanelMain.add(jButtonModyfikuj);
jPanelMain.add(jButtonPisz);
jPanelMain.add(jTextFieldNumer);
jPanelMain.add(jButtonZadzwonNumer);
jPanelMain.add(jScrollPaneKontakty);
jFrameMain.setContentPane(jPanelMain);
jFrameMain.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new ProjektJavaCezary();
}
});
}
}
package projektjavacezary;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
import javax.swing.event.*;
public class ActionListenerUsunKontakt implements ActionListener {
private ArrayList<Kontakty> kontakty;
private JList<Kontakty> jListBazaKontaktow;
private JScrollPane jScrollPaneKontakty;
ActionListenerUsunKontakt(ArrayList<Kontakty> kontakty, JList<Kontakty>
jListBazaKontaktow, JScrollPane jScrollPaneKontakty) {
this.kontakty = kontakty;
this.jListBazaKontaktow = jListBazaKontaktow;
this.jScrollPaneKontakty = jScrollPaneKontakty;
}
public void actionPerformed(ActionEvent ae) {
int index;
index = jListBazaKontaktow.getSelectedIndex();
kontakty.remove(index);
jListBazaKontaktow = new JList(kontakty.toArray());
jScrollPaneKontakty = new JScrollPane(jListBazaKontaktow);
}
}