我正在尝试在Jlist组件中删除twitter时间轴。我已经使用以下代码修复了框架的大小以及JList的单元格高度和单元格宽度。
jlist.setFixedCellHeight(50);
jlist.setFixedCellWidth(70);
我发现每个单元格的高度和宽度都很好,但如果单元格内部的推文内容超出宽度,则不会显示推文的其他部分。
例如:假设70宽度恰好符合推文“我很好”
假设推文是“我很好而且很棒”推文显示为“我很好......”超出部分推文没有显示出来。
我想在这里做的是,我希望剩下的部分推文显示在行下方,因为我有足够的高度在第二行显示推文。在同一示例中,在单元格内,我希望内容显示为
“我很好
且很棒“
我怎样才能做到这一点?
答案 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中);