Hallo
Ich würde gerne der JList einen Eintrag des Typs Ziffer hinzufügen. Und das mithilfe einer Unterklasse von AbstractListModel(Parametrisiert), also sprich einem eigenen ListModel.
Beim Kompilieren kommt beim setzen des Models der Hinweis: "Type safety: The method setModel(ListModel) belongs to the raw type JList. References to generic type JList<E> should be parameterized"
Das Programm wirft keinen Laufzeitfehler, aber fügt die Ziffer der Jlist nicht hinzu...
Könnte mir jemand erklären woran das liegt?
Hier meine Klassen:
GUI:
Unterklasse AbstractListModel:
Klasse Ziffer:
Vielen Dank und mfG
Ich würde gerne der JList einen Eintrag des Typs Ziffer hinzufügen. Und das mithilfe einer Unterklasse von AbstractListModel(Parametrisiert), also sprich einem eigenen ListModel.
Beim Kompilieren kommt beim setzen des Models der Hinweis: "Type safety: The method setModel(ListModel) belongs to the raw type JList. References to generic type JList<E> should be parameterized"
Das Programm wirft keinen Laufzeitfehler, aber fügt die Ziffer der Jlist nicht hinzu...
Könnte mir jemand erklären woran das liegt?
Hier meine Klassen:
GUI:
Code:
public class GUI extends JFrame {
private JPanel contentPane;
private JTextField txtZiffer;
private JList list;
private JButton btnSpeichern;
private UnterklasseAbstract<Ziffer> model;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
GUI frame = new GUI();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public GUI() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 599, 491);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
contentPane.add(getTxtZiffer());
contentPane.add(getList());
contentPane.add(getBtnSpeichern());
}
private JTextField getTxtZiffer() {
if (txtZiffer == null) {
txtZiffer = new JTextField();
txtZiffer.setBounds(68, 86, 146, 26);
txtZiffer.setColumns(10);
}
return txtZiffer;
}
private JList<Ziffer> getList() {
if (list == null) {
list = new JList<Ziffer>();
list.setBounds(272, 178, 200, 202);
list.setModel(getUnterklasseAbstract());
}
return list;
}
private JButton getBtnSpeichern() {
if (btnSpeichern == null) {
btnSpeichern = new JButton("speichern");
btnSpeichern.setBounds(80, 178, 115, 29);
btnSpeichern.addActionListener( e -> {
model.add(new Ziffer(2));
});
}
return btnSpeichern;
}
private UnterklasseAbstract<Ziffer> getUnterklasseAbstract(){
if(model == null){
model = new UnterklasseAbstract<>();
}
return model;
}
}
Unterklasse AbstractListModel:
Code:
public class UnterklasseAbstract<T> extends AbstractListModel<T>{
private ArrayList<T> list;
int i = 0;
public UnterklasseAbstract(){
list = new ArrayList<T>();
}
public void add(T t){
list.add(t);
}
public void change(int index, T t){
list.add(index, t);
}
public void remove(int index){
list.remove(index);
}
@Override
public T getElementAt(int index) {
// TODO Auto-generated method stub
return null;
}
@Override
public int getSize() {
// TODO Auto-generated method stub
return 0;
}
// public void change(int index){
//
// }
}
Klasse Ziffer:
Code:
public class Ziffer {
private int nummer;
public Ziffer(int nummer){
this.nummer = nummer;
}
public void setNr(int nummer){
}
public int getNr(){
return nummer;
}
}
Vielen Dank und mfG