显示JList组件的问题

时间:2011-04-12 06:09:14

标签: java swing jlist

我正在尝试在Jlist组件中删除twitter时间轴。我已经使用以下代码修复了框架的大小以及JList的单元格高度和单元格宽度。

jlist.setFixedCellHeight(50);
jlist.setFixedCellWidth(70);

我发现每个单元格的高度和宽度都很好,但如果单元格内部的推文内容超出宽度,则不会显示推文的其他部分。

例如:假设70宽度恰好符合推文“我很好”

假设推文是“我很好而且很棒”推文显示为“我很好......”超出部分推文没有显示出来。

我想在这里做的是,我希望剩下的部分推文显示在行下方,因为我有足够的高度在第二行显示推文。在同一示例中,在单元格内,我希望内容显示为

“我很好

且很棒“

我怎样才能做到这一点?

3 个答案:

答案 0 :(得分:1)

您需要一个自定义ListCellRenderer,它返回一个支持多行文本的组件。默认渲染器返回的JLabel仅为单行。您可以将f.i实现为返回JTextArea的渲染器

答案 1 :(得分:1)

正如kleopatra所说,

我们需要一个自定义ListCellRenderer,它返回一个支持多行文本的组件。默认渲染器返回的JLabel仅为单行。我们需要创建一个这样的渲染器,它返回一个可以在其中包含多行的JTextArea。以下是此简单代码。

public class CustomListRenderer implements ListCellRenderer {

   @Override
   public Component getListCellRendererComponent(JList list, Object value, int index,
        boolean isSelected, boolean cellHasFocus) {

        JTextArea renderer = new JTextArea(3,10);
        renderer.setText(value.toString());
        renderer.setLineWrap(true);
        return renderer;
   }
}

我们需要添加以下行来将单元格渲染器设置为jlist。

jlist.setCellRenderer(new CustomListRenderer());

答案 2 :(得分:0)

引用JList java doc

  

JList不实现滚动   直。创建一个列表   滚动,使其成为视口视图   一个JScrollPane。例如:

     

JScrollPane scrollPane = new   JScrollPane的(myList中);

     

//或者分两步:JScrollPane   scrollPane = new JScrollPane();   使用scrollPane.getViewport()的setView(myList中);