Java 数据不存在';我不会出现在JList中

Java 数据不存在';我不会出现在JList中,java,jpanel,jlist,Java,Jpanel,Jlist,我正在尝试在带有DefaultListModel的JList中显示JPanel。一切都很好,所以我有点不确定出了什么问题。它实际上在某个时候起作用了,但我不得不在一个更大的项目中实现它,现在它停止了工作。问题很可能出在Jp_Diskusion的某个地方,但我就是找不到 public class Jp_Diskussion extends JPanel { private Jd_BeitragErstellen jd_beitr_erst; private Jd_BeitragBe

我正在尝试在带有DefaultListModel的JList中显示JPanel。一切都很好,所以我有点不确定出了什么问题。它实际上在某个时候起作用了,但我不得不在一个更大的项目中实现它,现在它停止了工作。问题很可能出在Jp_Diskusion的某个地方,但我就是找不到

public class Jp_Diskussion extends JPanel {
    private Jd_BeitragErstellen jd_beitr_erst;
    private Jd_BeitragBearbeiten jd_beitr_bearb;
    private JFrame parentFrame = (JFrame) this.getParent();
    private JComboBox comboBoxMA;
    private JComboBox comboBoxTag;
    private JButton btnFiltern;
    private JLabel labelFiltern;
    private JLabel labelOpt;
    private JButton btnBeitragVerfassen;
    private JScrollPane messageScroll;

public Jp_Diskussion() {
    createMessageList();    
}

private void createMessageList() {
    setBounds(new Rectangle(0, 0, 994, 624));
    setLayout(null);
    add(getJScrollPane());
    add(getComboBoxTag());
    add(getComboBox_2());
    add(getBtnFiltern());
    add(getLabelFiltern());
    add(getLabelOpt());
    add(getBtnBeitragVerfassen());

}

private JScrollPane getJScrollPane() {
    if (messageScroll == null) {

        MessageList m = new MessageList(); 

        m.getMessage("NAME AUTOR", "<html><body style='width: 690px;'>Lorem ipsum dolor sit amet.", "22.01.13", "SOA");
        m.getMessage("AUTOR NAME", "<html><body style='width: 690px;'>Lorem ipsum dolor sit amet.", "22.01.13", "SOA");

        messageScroll = new JScrollPane(m);
        messageScroll.setBounds(20, 20, 954, 461);          
    }
    return messageScroll;
}

private JButton getBtnBeitragVerfassen() {

private JLabel getLabelFiltern() {

private JLabel getLabelOpt() {

private JComboBox getComboBoxTag() {
private JComboBox getComboBox_2() {
private JButton getBtnFiltern() {
}
消息类:

public class Message extends JPanel{

    JLabel lblAuthor = new JLabel();
    JLabel lblText = new JLabel();
    JLabel lblDate = new JLabel();
    JLabel lblTag = new JLabel();

 public Message(String author, String text, String date, String tag){

    lblAuthor.setText(author);
    lblText.setText(text);
    lblDate.setText(date);
    lblTag.setText(tag);

    add(lblAuthor,BorderLayout.NORTH);
    add(lblText,BorderLayout.WEST);
    add(lblDate,BorderLayout.SOUTH);
    add(lblTag,BorderLayout.EAST);

    GroupLayout groupLayout = new GroupLayout(this);

    groupLayout.setHorizontalGroup(groupLayout.createSequentialGroup()
    .addGroup(groupLayout.createParallelGroup()     
    .addComponent(lblAuthor)
    .addComponent(lblText)
    .addComponent(lblTag))
    .addComponent(lblDate))
    ;
    groupLayout.setVerticalGroup(groupLayout.createSequentialGroup()
    .addGroup(groupLayout.createParallelGroup()     
    .addComponent(lblAuthor)
    .addComponent(lblDate))
    .addComponent(lblText)
    .addComponent(lblTag))
    ;

    this.setLayout(groupLayout);

 }
}
我的渲染器:

public class MessageRenderer implements ListCellRenderer {
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
    Component component = (Component)value;

    if (isSelected) {
        component.setBackground(Color.RED);
    } else {
        component.setBackground(Color.GREEN);
    }
    return component;
}
}

良好的命名约定。
private void createMessageList()做什么?我想你可以称之为
init\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu某物
JList-messageList=new-JList(messageModel)
有问题,因为您刚刚声明了
公共类MessageList扩展了JList
。您不需要
消息列表
字段。尝试完全删除该变量。在您的
MessageList
类中,您可以通过执行类似(不完全确定)
这样的操作来引用它附带的默认模型。getDefaultModel
将返回您正在扩展的
JList
的默认模型。好的,就是这样,我添加了解决方案作为答案。看起来不错。因为
MessageList
扩展了
JList
,它附带了一个
DefaultListModel
,所以您不需要声明一个。相反,请尝试(类似)this.getDefaultModel
,它将为您返回一个
DefaultListModel
。我正在给你写一份详尽的答复!谢谢你的努力;-)很好地使用了
这个
关键字。可能在需要模型时尝试(不确定确切语法)
this.getDefaultModel
,在模型更改时尝试
this.setDefaultModel
,并且需要更新
MessageList
对象,以便在Swing中正确显示它。
public class MessageRenderer implements ListCellRenderer {
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
    Component component = (Component)value;

    if (isSelected) {
        component.setBackground(Color.RED);
    } else {
        component.setBackground(Color.GREEN);
    }
    return component;
}
}
public class MessageList extends JList{

DefaultListModel messageModel = new DefaultListModel();

  MessageRenderer messageRenderer = new MessageRenderer();

     public MessageList( ){
        this.setCellRenderer(messageRenderer);
        this.setModel(messageModel);

     }

     public void getMessage(String author, String text, String date, String tag){
         messageModel.addElement(new Message(author, text, date, tag));
     }

}