Frage von niki308, 26

Warum funktioniert der Java Code nicht? Programmieren eines JList Objekts?

Hi,

Ich möchte ein kleines Converter Programm machen. In diesem Programm möchte ich in einer JList alle Convert Möglichkeiten ausgeben.

Nun wollte ich eine Klasse programmieren, in der mein JList Kram passiert Code:

MainWindow.java:

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import Content.Lists;

public class MainWindow extends JFrame implements ActionListener, WindowListener {

    private final String listEntrys[] =  {"Dollar <-> Euro", "Km <-> Nm", "Kilogramm <-> Gramm"};
    protected DefaultListModel listModel;

    public MainWindow(String str) {

        super(str);

        addWindowListener(this);

        // Panel
        JPanel mainPanel = new JPanel(new GridLayout(1, 1)); // Kommt noch mehr als die Liste
        // List Model
        listModel = new DefaultListModel();
        initList();

        // Liste wird erstellt und es wird mit dem Panel abgeschlossen
        Lists mainList = new Lists(listModel);

        mainPanel.add(mainList); /* FEHLER */

        setContentPane(mainPanel);

    }

    public static void main(String[] args) {
        // Window Settings
        MainWindow window = new MainWindow("Converter by niklas308");
        window.setSize(300, 300);
        window.setResizable(false);
        window.setVisible(true);

    }

    private void initList() {
        // Liste wird initialisiert
        for (int i = 0; i < listEntrys.length; i++) {

            listModel.addElement(listEntrys[i]);

        }

    }

    public void actionPerformed(ActionEvent e) {

    }

    public void windowClosing(WindowEvent e) {
        dispose();
        System.exit(0);
    }

    public void windowOpened(WindowEvent e) {}
    public void windowActivated(WindowEvent e) {}
    public void windowIconified(WindowEvent e) {}
    public void windowDeiconified(WindowEvent e) {}
    public void windowDeactivated(WindowEvent e) {}
    public void windowClosed(WindowEvent e) {}
}

Lists.java:

package Content;

import javax.swing.*;

public class Lists {

    private JList listObj;

    public Lists(DefaultListModel listModel) {

        listObj = new JList(listModel);

    }

}

So, am gekennzeichneten Punkt tritt ein Fehler auf

mainPanel.add(mainList);

Woher kommt dieser Fehler und wie kann ich ihn beheben?

LG Niklas

Antwort
von MrNaas, 26

Du kannst zum mainPanel nur Gui Komponenten hinzufügen. Deine Klasse Lists müsste also java.awt.Component extenden damit das funktioniert.

Ich versteh auch gar nicht was du mit der Lists Klasse machen willst. Füge doch die Jlist direkt dem mainPanel hinzu dann müsste es gehen.

Kommentar von niki308 ,

Ah danke,

hat perfekt funktioniert ;D

Kommentar von niki308 ,

Problem: Das Listen Objekt wird nicht gezeigt.

Sorry für die dummen Fragen aber ich bin noch neu in Java.

public class Lists extends java.awt.Component {
public Lists(DefaultListModel listModel) {
JList listObj = new JList(listModel);
System.out.println("Junge");
}
}

"Junge" wird ausgegeben und die Liste wird nicht gezeigt...

JPanel mainPanel = new JPanel(new GridLayout(1, 1));
listModel = new DefaultListModel();
initList();
Lists mainList = new Lists(listModel);
mainPanel.add(mainList);

Sonstiger Code wie vorher

Kommentar von niki308 ,

Ok ne hat sich erledigt xD

Ich füge das jetzt in den normalen Code ein xD

Keine passende Antwort gefunden?

Fragen Sie die Community