显示 JList 组件时出现问题

发布于 2024-10-31 20:46:11 字数 500 浏览 3 评论 0原文

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

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

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

例如:假设 70 宽度完全适合推文“我很好”

假设如果推文是“我很好而且很棒” 则推文显示为“我很好.. ...” 推文超出的部分不会显示。

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

“我很好

很棒”

我怎样才能实现这一点?

I am trying to dsiplay the twitter timeline in a Jlist component. I have already fixed the size of my frame and the cell height and cell width of the JList too with the following code.

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

I find that the height and width of each cell are fine but if the content of the tweet inside the cell exceeds the width it is not displaying the further part of the tweet.

For example: Assume that 70 width exactly fits the tweet "I am good"

Suppose if the tweet is "I am good and great" The tweet is getting displayed as "I am good....." The exceeded part of the tweet is not getting displayed.

What I want to do here is, I want the rest out part of the tweet to be displayed below the line as I do have sufficient height to display the tweet in a second line. In the same example, within the cell, I want the content to be displayed as

"I am good

and great"

How can I achieve this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

镜花水月 2024-11-07 20:46:11

正如 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());

As kleopatra said,

We need a custom ListCellRenderer which returns a component that supports multiple lines of text. The default renderer returns a JLabel with is single-line only. We need to create such a renderer which returns a JTextArea that can wrap multiple lines within it. The following is the simple code for this.

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

We need to add the following line to set the cell renderer to the jlist.

jlist.setCellRenderer(new CustomListRenderer());
忆沫 2024-11-07 20:46:11

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

you need a custom ListCellRenderer which returns a component that supports multiple lines of text. The default renderer returns a JLabel with is single-line only. You can implement f.i a renderer which returns a JTextArea

夜光 2024-11-07 20:46:11

引用 JList java doc

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

JScrollPane 滚动窗格 = 新
JScrollPane(myList);

// 或者分两步:JScrollPane
滚动窗格 = new JScrollPane();
scrollPane.getViewport().setView(myList);

quoting from the JList java doc

JList doesn't implement scrolling
directly. To create a list that
scrolls, make it the viewport view of
a JScrollPane. For example:

JScrollPane scrollPane = new
JScrollPane(myList);

// Or in two steps: JScrollPane
scrollPane = new JScrollPane();
scrollPane.getViewport().setView(myList);

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文