B
booleanperhaps
Gast
Hallo zusammen
mein Problem ist eigentlich recht simpel aber eine Antwort hab ich im Netz leider nicht gefunden. Ich habe eine Liste die ich gerne befüllen möchte durch einen Mausklick der ein Popupmenü öffnet, das einen anbietet einen neuen Eintrag zu erstellen. Ich hab das ganze so getrennt damit es dem MVC-Pattern gerecht wird, aber es funktioniert einfach nicht. Die Liste wird nicht geupdate aber der Debugger sagt mir das ein Element zum Model hinzugefügt wurde, was eigentlich heißen müsste das auch die Liste was davon mitbekommt, was sie aber nicht tut.
Hier mal die abgespeckte Version ohne Popupmenü etc. Das DefaultListModel hab ich nicht erweitert, da mir wichtig war das ich erstmal die grundlegende Funktion verstehe und zum laufen bringe.
View
[JAVA=42]public class JListTest extends JFrame{
private static JListTest instance = null;
private JList list = new JList();
private TestModel model = new TestModel();
public static JListTest getInstance() {
if(instance == null){
return instance = new JListTest();
}else{
return instance;
}
}
public ListModel getModel(){
return list.getModel();
}
public static void main(String[] args) {
new JListTest();
}
public JListTest() {
this.setContentPane(testpane());
this.pack();
this.setVisible(true);
}
public JList testpane(){
list.setModel(model);
list.addMouseListener(new TestMouseListener());
list.setLayoutOrientation(JList.VERTICAL_WRAP);
return list;
}
}[/code]
Model
[JAVA=42]public class TestModel extends DefaultListModel{
}[/code]
[JAVA=42]public class TestMouseListener extends MouseAdapter{
@Override
public void mouseClicked(MouseEvent mEvent) {
if ((mEvent.getModifiers() & InputEvent.BUTTON1_MASK) != 0) {
} if ((mEvent.getModifiers() & InputEvent.BUTTON2_MASK) != 0) {
} if ((mEvent.getModifiers() & InputEvent.BUTTON3_MASK) != 0 && SwingUtilities.isRightMouseButton(mEvent)) {
JListTest jlt = JListTest.getInstance();
DefaultListModel dlm = (DefaultListModel)jlt.getModel();
dlm.addElement("String");
}
}
}[/code]
Mir ist klar das ich das DLM auch direkt in die View packen kann, wo dann das updaten auch funtkioniert, aber das ist eben nicht mein Ziel.
Würde mich freuen wenn mir jemand helfen könnte.
mein Problem ist eigentlich recht simpel aber eine Antwort hab ich im Netz leider nicht gefunden. Ich habe eine Liste die ich gerne befüllen möchte durch einen Mausklick der ein Popupmenü öffnet, das einen anbietet einen neuen Eintrag zu erstellen. Ich hab das ganze so getrennt damit es dem MVC-Pattern gerecht wird, aber es funktioniert einfach nicht. Die Liste wird nicht geupdate aber der Debugger sagt mir das ein Element zum Model hinzugefügt wurde, was eigentlich heißen müsste das auch die Liste was davon mitbekommt, was sie aber nicht tut.
Hier mal die abgespeckte Version ohne Popupmenü etc. Das DefaultListModel hab ich nicht erweitert, da mir wichtig war das ich erstmal die grundlegende Funktion verstehe und zum laufen bringe.
View
[JAVA=42]public class JListTest extends JFrame{
private static JListTest instance = null;
private JList list = new JList();
private TestModel model = new TestModel();
public static JListTest getInstance() {
if(instance == null){
return instance = new JListTest();
}else{
return instance;
}
}
public ListModel getModel(){
return list.getModel();
}
public static void main(String[] args) {
new JListTest();
}
public JListTest() {
this.setContentPane(testpane());
this.pack();
this.setVisible(true);
}
public JList testpane(){
list.setModel(model);
list.addMouseListener(new TestMouseListener());
list.setLayoutOrientation(JList.VERTICAL_WRAP);
return list;
}
}[/code]
Model
[JAVA=42]public class TestModel extends DefaultListModel{
}[/code]
[JAVA=42]public class TestMouseListener extends MouseAdapter{
@Override
public void mouseClicked(MouseEvent mEvent) {
if ((mEvent.getModifiers() & InputEvent.BUTTON1_MASK) != 0) {
} if ((mEvent.getModifiers() & InputEvent.BUTTON2_MASK) != 0) {
} if ((mEvent.getModifiers() & InputEvent.BUTTON3_MASK) != 0 && SwingUtilities.isRightMouseButton(mEvent)) {
JListTest jlt = JListTest.getInstance();
DefaultListModel dlm = (DefaultListModel)jlt.getModel();
dlm.addElement("String");
}
}
}[/code]
Mir ist klar das ich das DLM auch direkt in die View packen kann, wo dann das updaten auch funtkioniert, aber das ist eben nicht mein Ziel.
Würde mich freuen wenn mir jemand helfen könnte.