java - 数据未显示在 JList 中

标签 java jpanel jlist

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

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() {
}

JList:

public class MessageList extends JList{

DefaultListModel messageModel = new DefaultListModel();
  JList  messageList = new JList(messageModel);
  MessageRenderer messageRenderer = new MessageRenderer();

     public MessageList( ){
        messageList.setCellRenderer(messageRenderer);

     }

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

}

消息类:

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;
}
}

最佳答案

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));
     }

}

关于java - 数据未显示在 JList 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20658790/

相关文章:

java - 有没有办法在Java端复制粘贴,同时动态改变剪贴板的内容?

java - 将 "0"数字保留在数字前面

java - Java中的drawImage(),为什么图像没有加载?

java - ListSelectionListener 中的方法 getSelectionIndex()

java - Android studio-transformClassesWithDexForDebug 错误

java - 在主类中使用另一个类的方法?

java - 绘制随机圆圈,将不与另一个圆圈相交的任何圆圈涂成红色

java - 在框架内重新绘制 JPanel

java - 使用值删除 Swing 中的复选框

java - 按下从文件加载的 JButton JList 时不会刷新