Element zu Listenfeld hinzufügen

Status
Nicht offen für weitere Antworten.

vega_ffm

Mitglied
Hallo Allerseits.

Ich versuche über einen Button ein Element in eine JList einzufügen. Ich habe erst vor ein paar Stunden mit Java angefangen, insofern sind meine Kenntnisse katastrophal. :-( Inzwischen habe ich jedoch schon herausgefunden, dass so etwas wohl nicht direkt geht, sondern nur über ein "DefaultListModel".

Ich kann als Visual Studio Programmierer zwar nicht nachvollziehen wieso dieser Umweg technisch nötig ist (würde mich stark interessieren), aber mein Problem besteht in der Umsetzung:
Code:
       import java.swing.*;
        ...
        ...
        ...
        DefaultListModel listModel = (DefaultListModel)jList1.getModel(); //jList1 ist ein Listenfeld
        listModel.addElement("test");

Die Fehlermeldungen:

Exception in thread "AWT-EventQueue-0" java.lang.Error: java.lang.reflect.InvocationTargetException
at org.jdesktop.application.ApplicationAction.actionFailed(ApplicationAction.java:859)
at org.jdesktop.application.ApplicationAction.noProxyActionPerformed(ApplicationAction.java:665)
at org.jdesktop.application.ApplicationAction.actionPerformed(ApplicationAction.java:698)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:272)
at java.awt.Component.processMouseEvent(Component.java:6041)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
at java.awt.Component.processEvent(Component.java:5806)
at java.awt.Container.processEvent(Container.java:2058)
at java.awt.Component.dispatchEventImpl(Component.java:4413)
at java.awt.Container.dispatchEventImpl(Container.java:2116)
at java.awt.Component.dispatchEvent(Component.java:4243)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
at java.awt.Container.dispatchEventImpl(Container.java:2102)
at java.awt.Window.dispatchEventImpl(Window.java:2440)
at java.awt.Component.dispatchEvent(Component.java:4243)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.jdesktop.application.ApplicationAction.noProxyActionPerformed(ApplicationAction.java:662)
... 27 more
Caused by: java.lang.ClassCastException: desktopapplication1.DesktopApplication1View$4 cannot be cast to javax.swing.DefaultListModel
at desktopapplication1.DesktopApplication1View.test(DesktopApplication1View.java:249)
... 32 more

PS: Ich arbeite unter NetBeans 6.0.1 (Windows)



Ich hoffe ihr könnt mir helfen,
vega_ffm
 
S

SlaterB

Gast
die JList selber zeigt nur an, hat keine Daten, das macht das Model,
die JList kennt das Model nur unter dem Interface ListModel,
und dieses Interface hat keine add-Operation (siehe API),
daher ist es der JList nicht möglich, etwas einzufügen

nachfolgend natürlich die Frage, warum es diese add-Operation nicht gibt,
das ist dann eine Design-Entscheidung, vielleicht soll alles mögliche ein ListModel sein können,
auch unveränderliche Daten aufbauend auf Arrays, Dateien oder sonstwas,
aber da rate ich nun nur

----------

die entscheidene Exception ist
> Caused by: java.lang.ClassCastException: desktopapplication1.DesktopApplication1View$4 cannot be cast to javax.swing.DefaultListModel

deine JList hat auf jeden Fall kein DefaultListModel,
sondern anscheinend eine anonyme innere Klasse von DesktopApplication1View,
zeige bitte den Code zur Erstellung der JList, da wird das Model sicherlich gesetzt,

wenn das automatisch generierter Code ist, dann wirds schwierig,
kannst du den modifizieren?
 

vega_ffm

Mitglied
Hi, hatte ein paar Tage kein Inet, deshalb die späte Antwort.

Ich habe den alten Code inzwischen versaut, aber ich habe einen neuen, möglichst kompakten vorbereitet.
Eigentlich nur ein Textfeld, ein Button und ein Listenfeld (alles Swing). Beim Klicken soll der Inhalt des Textfeldes in die ListBox übernommen werden und genau das bekomme ich nicht hin. :-(



Hier der Code:

Code:
package examples;
import javax.swing.*;
import java.lang.*;
import java.awt.*;
//javax.swing.ListModel;

public class ContactEditor extends javax.swing.JFrame {
    
    /**
     * Creates new form ContactEditor
     */
    public ContactEditor() {
        initComponents();
    }
    
    
    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {

        buttonGroup1 = new javax.swing.ButtonGroup();
        jButton1 = new javax.swing.JButton();
        jTextField1 = new javax.swing.JTextField();
        jScrollPane1 = new javax.swing.JScrollPane();
        jList1 = new javax.swing.JList();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle("E-mail Contacts");

        jButton1.setText("Add");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        jTextField1.setText("");

        jList1.setModel(new javax.swing.AbstractListModel() {
            String[] strings = { "Item 1", "Item 2", "Item 3", "Item 4", "Item 5" };
            public int getSize() { return strings.length; }
            public Object getElementAt(int i) { return strings[i]; }
        });
        jScrollPane1.setViewportView(jList1);

        org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(layout.createSequentialGroup()
                .addContainerGap()
                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING, false)
                    .add(org.jdesktop.layout.GroupLayout.LEADING, jButton1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .add(org.jdesktop.layout.GroupLayout.LEADING, jScrollPane1)
                    .add(org.jdesktop.layout.GroupLayout.LEADING, jTextField1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 477, Short.MAX_VALUE))
                .addContainerGap(org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(layout.createSequentialGroup()
                .addContainerGap()
                .add(jTextField1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                .add(jScrollPane1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 67, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                .add(jButton1)
                .addContainerGap(org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        pack();
    }// </editor-fold>

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
       
        
    }                                        
    
    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new ContactEditor().setVisible(true);
            }
        });
    }
    
    // Variables declaration - do not modify
    private javax.swing.ButtonGroup buttonGroup1;
    private javax.swing.JButton jButton1;
    private javax.swing.JList jList1;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTextField jTextField1;
    // End of variables declaration
    
}

Ich hoffe ihr könnt mir helfen. :)



PS: Hatte das Listenfeld mal in der AWT Version getestet, da funktioniert das einfügen ganz einfach
Code:
list1.add("Test");
Was sind die Nachteile dieser Lösung?
 
S

SlaterB

Gast
GroupLayout gehört nicht zur Java-Klassenbibliothek,
solange du sowas nutzt, kann ich zumindest dir nicht helfen,
 

vega_ffm

Mitglied
Hallo Robert.

Ich habe es gerade geschafft das Listenfeld zum laufen zu bekommen. :toll:

Trotzdem habe ich an dieser Stelle noch eine Frage zu deinem letzten Posting

GroupLayout gehört nicht zur Java-Klassenbibliothek,
solange du sowas nutzt, kann ich zumindest dir nicht helfen,


Ich bin sehr froh über diesen Satz, da ich nicht wusste, dass NetBeans Codeelemente einbindet, die bei anderen Probleme verursachen. Dieser Teil liegt leider in einem schreibgeschützten Bereich (und kann sicherlich soweiso nicht ersatzlos entfernt werden).

Ich werde versuchen das anders einzustellen. Hast du vielleicht einen Tipp wie das funktioniert?

MfG vega_ffm
 

André Uhres

Top Contributor
SlaterB hat gesagt.:
GroupLayout gehört nicht zur Java-Klassenbibliothek
Ist mittlerweile übernommen worden:
http://java.sun.com/javase/6/docs/api/javax/swing/GroupLayout.html
Das kann man in NetBeans einstellen:
im Inspector Rechtsklick auf den "Form" node | Properties | Layout Generation Style:
"Standard Java 6 code" (statt "Swing Layout Extensions Library")
Oder:
Tools | Options | Advanced Options | Editing | GUI Builder | Layout Generation Style
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
berserkerdq2 Wie greife ich auf ein Element zu, welches ich beim Scenebuilder erstellt habe AWT, Swing, JavaFX & SWT 10
W Element aus comboBox mit observableList löschen AWT, Swing, JavaFX & SWT 3
J JavaFx PDF in einem Element in einem Fenster anzeigen. AWT, Swing, JavaFX & SWT 11
G FX warten bis ein anderes GUI Element ausgewählt wurde AWT, Swing, JavaFX & SWT 8
N JavaFX Tableview nach Löschen von Element falscher Index AWT, Swing, JavaFX & SWT 4
M Internal Frames und Canvas-Element AWT, Swing, JavaFX & SWT 9
kodela Swing Element einer JComboBox ausgrauen AWT, Swing, JavaFX & SWT 3
K JavaFX Element in HBOX nach rechts verschieben AWT, Swing, JavaFX & SWT 2
stroggi Swing Suche nach Kurveneditor (UI-Element) AWT, Swing, JavaFX & SWT 1
I FXML: StackPane als Root-Element AWT, Swing, JavaFX & SWT 5
ImperatorMing JavaFX Übersicht - Welches Element kann welches Erreignis AWT, Swing, JavaFX & SWT 3
D Swing "blaues" Element aus JComboBox erhalten AWT, Swing, JavaFX & SWT 6
F JavaFX Custom ListView erstellt ghost Element AWT, Swing, JavaFX & SWT 3
GreenTeaYT Wie vergebe Ich den Jframe Title den Namen aus einem Element von der Arraylist ? AWT, Swing, JavaFX & SWT 4
L JavaFX Hover Effekt über das Parent Element AWT, Swing, JavaFX & SWT 4
domjos1994 JavaFX Element auswählen auf dem der Cursor ist AWT, Swing, JavaFX & SWT 1
M Ein Element in mehreren JList selektieren AWT, Swing, JavaFX & SWT 5
R GUI Element in einer Methode aktualisieren (JTextPane) AWT, Swing, JavaFX & SWT 13
G JavaFX NullPointerException bei Zugriff auf FXML Element AWT, Swing, JavaFX & SWT 0
P Swing Nach removeAll() noch 1 Element vorhanden AWT, Swing, JavaFX & SWT 0
K Swing GUI Element wird nicht skaliert AWT, Swing, JavaFX & SWT 6
K Swing JList - Element richtig hinzufügen AWT, Swing, JavaFX & SWT 4
Z Swing Von vielen Klassen auf ein GUI-Element zugreifen AWT, Swing, JavaFX & SWT 10
M Element aus JList eines JFileChooser entfernen AWT, Swing, JavaFX & SWT 3
E selektiertes Element aus JList zurückgeben AWT, Swing, JavaFX & SWT 7
H Swing Element aus JComboBox auswählen AWT, Swing, JavaFX & SWT 2
C click auf JButton und darunter liegendes element AWT, Swing, JavaFX & SWT 5
B Element schrittweise verschieben AWT, Swing, JavaFX & SWT 2
S Ausschluss bei Klick auf GUI Element AWT, Swing, JavaFX & SWT 6
GianaSisters AWT Per Button neues Element auf den jPanel setzen AWT, Swing, JavaFX & SWT 6
M gleiches Element in JList mehrmals hintereinander auswählen AWT, Swing, JavaFX & SWT 6
GianaSisters jList nur einmal ein Element anklicken AWT, Swing, JavaFX & SWT 3
F Element anzeigen / erstellen. Maus vs Controller AWT, Swing, JavaFX & SWT 7
M Frage nach Swing Element AWT, Swing, JavaFX & SWT 3
J jList, recht Maustast => Tooltip zu Element AWT, Swing, JavaFX & SWT 8
W SWT Resize Tree-Element AWT, Swing, JavaFX & SWT 3
Landei Swing JTree - Element mit Doppelklick auswählen AWT, Swing, JavaFX & SWT 4
B Swing: letztes Element wird immer auf Fenstergröße gezogen AWT, Swing, JavaFX & SWT 3
F Swing Paint mit Canvas Element AWT, Swing, JavaFX & SWT 35
G JTree Element wird nicht markiert AWT, Swing, JavaFX & SWT 2
X Swing Swing Element gesucht -> um als Konsole zu fungieren AWT, Swing, JavaFX & SWT 4
H GridBagLayout Element komplett ausfüllen AWT, Swing, JavaFX & SWT 5
D Swing Document-Structure; Element AWT, Swing, JavaFX & SWT 4
N Nur ein Element sichtbar beim Drucken eines JFrame AWT, Swing, JavaFX & SWT 9
C Aktion durchführen bei Klick auf ein Element im JTree (Untersch. Klick und Doppklick) AWT, Swing, JavaFX & SWT 5
S Listener der mich informiert wann immer einer Liste ein Element hinzugefuegt wird? AWT, Swing, JavaFX & SWT 4
H Swing [gelöst]Neues Swing Element erstellen AWT, Swing, JavaFX & SWT 4
D Problem an Parent Element ranzukommen. AWT, Swing, JavaFX & SWT 7
G JList und ein neues Element oben in der Liste einfügen AWT, Swing, JavaFX & SWT 4
U Ein Element in einer JList farbig hervorheben ! AWT, Swing, JavaFX & SWT 2
ABstraCT JCombobox dynamisch füllen (erstes Element Problem) AWT, Swing, JavaFX & SWT 4
N JPopupMenu - ausgewähltes Element zurückgeben AWT, Swing, JavaFX & SWT 2
S MouseListener zurückverfolgung auf element. AWT, Swing, JavaFX & SWT 7
A Element aus einer JList löschen AWT, Swing, JavaFX & SWT 5
zilti Swing-Element verändern AWT, Swing, JavaFX & SWT 13
N in jScrollPane, neues Swing Element hinzufügen AWT, Swing, JavaFX & SWT 6
M Zwei Element auf ein Contentpane AWT, Swing, JavaFX & SWT 45
G Listener (anonyme Klasse) jedem Element eines Array zuweisen AWT, Swing, JavaFX & SWT 5
V Wie heisst dieses GUI-Element? Gibt es sowas für Swing? AWT, Swing, JavaFX & SWT 10
E JTree selektiertes Element AWT, Swing, JavaFX & SWT 3
S Swing Element für Explorer-Fenster darstellung AWT, Swing, JavaFX & SWT 13
G JCombobox - Element richtig anzeigen AWT, Swing, JavaFX & SWT 5
W Element im JTree farblich markieren AWT, Swing, JavaFX & SWT 6
N JTree mehrere/ohne Root Element/e AWT, Swing, JavaFX & SWT 2
M JLIST - Ein Element selektieren und weiterverarbeiten! AWT, Swing, JavaFX & SWT 2
C leeres Element in Gridlayout einfuegen AWT, Swing, JavaFX & SWT 3
E Wie heißt dieses graphische Element (Bild inside)? AWT, Swing, JavaFX & SWT 2
G JTree. Neues Element hinzufügen und Selection beibehalten! AWT, Swing, JavaFX & SWT 3
D Element aus einer Methode heraus hinzufügen AWT, Swing, JavaFX & SWT 2
bummerland auf übergeordnetes element zugreifen AWT, Swing, JavaFX & SWT 2
J Gibt es in Java ein mehrspaltiges Listenfeld? AWT, Swing, JavaFX & SWT 6
F Bilder zu ausführbarer Jar-Datei hinzufügen AWT, Swing, JavaFX & SWT 5
K Tabelle zu Datenbank hinzufügen / Apache Derby AWT, Swing, JavaFX & SWT 7
Apfelbaum2005 Swing JFrame mehrere JPanels mit unterschiedlichen Formen hinzufügen AWT, Swing, JavaFX & SWT 1
N AWT JPanel zu Jframe hinzufügen AWT, Swing, JavaFX & SWT 2
L paintComponent in Panel eines Borderlayouts hinzufügen AWT, Swing, JavaFX & SWT 3
A JavaFX exportierte Jar ohne beim starten die Libs hinzufügen? AWT, Swing, JavaFX & SWT 2
P Swing jxmapviewer hinzufügen/nutzen funktioniert nicht AWT, Swing, JavaFX & SWT 7
D ObservableList Werte hinzufügen AWT, Swing, JavaFX & SWT 7
D JavaFX Probleme beim nachtäglichen hinzufügen der jfx dependency AWT, Swing, JavaFX & SWT 7
L Swing Wert vom Textfield in Array List hinzufügen AWT, Swing, JavaFX & SWT 2
N Einer TextArea ein ScrollPane hinzufügen AWT, Swing, JavaFX & SWT 8
J JButton Icon hinzufügen AWT, Swing, JavaFX & SWT 5
M TableView Zeile hinzufügen AWT, Swing, JavaFX & SWT 5
K JLabel mit Bilder im nicht initialisierten JPanel hinzufügen AWT, Swing, JavaFX & SWT 5
B Mit der ChoiceBox-Auswahl Textfelder hinzufügen AWT, Swing, JavaFX & SWT 18
dereki2000 Swing JFrame nah hinzufügen von Komponenten akualisieren. AWT, Swing, JavaFX & SWT 2
P JPanel KeyListener hinzufügen AWT, Swing, JavaFX & SWT 8
cool_brivk24 BufferedImage einem ClickEvent hinzufügen AWT, Swing, JavaFX & SWT 13
L ActionListener zu Button in Panel hinzufügen AWT, Swing, JavaFX & SWT 10
P Swing Mehrere JPanels auf ein JFrame hinzufügen? AWT, Swing, JavaFX & SWT 2
ralfb1105 jTextArea Scrollbar hinzufügen - mit Jigloo erstellt AWT, Swing, JavaFX & SWT 7
Q AWT TicTacToe Image auf Button hinzufügen AWT, Swing, JavaFX & SWT 5
J JFrame Panel hinzufügen AWT, Swing, JavaFX & SWT 10
Wurstsemmel SWT MenuItem dynamisch hinzufügen AWT, Swing, JavaFX & SWT 2
F JavaFX In SampleController ObservableList zu ListView hinzufügen AWT, Swing, JavaFX & SWT 0
MaxG. Swing Swing Komponenten zur Laufzeit hinzufügen AWT, Swing, JavaFX & SWT 2
MaxG. Swing JMenu einen Listener Hinzufügen AWT, Swing, JavaFX & SWT 25
Hijo2006 Tabsheets hinzufügen AWT, Swing, JavaFX & SWT 4
Ghostman1711 Hinzufügen ausgewählter Dateinen des Filechoosers zu einem JTable AWT, Swing, JavaFX & SWT 9

Ähnliche Java Themen

Neue Themen


Oben