- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在使用 JList 来包装一些显示给用户的变量只读文本。每行文本都渲染在基于 JTextArea 的列表单元格中,即
public class InfoTextCellRenderer extends JTextArea implements ListCellRenderer
该渲染器由列表使用:
textList.setCellRenderer(new InfoTextCellRenderer());
JList 嵌入在 JScrollPane 中。
我这样做是因为这里的典型使用模式是使用箭头键,而不是鼠标。这允许突出显示当前单元格,使用户清楚地看到正在发生的事情。以前的实现使用单个 JTextArea,要求用户多次按下向下箭头,直到不可见的插入符号(因为不可编辑而不可见)到达可以发生滚动的点(窗口的底部或顶部)。
问题是,即使 InfoTextCellRenderer 打开换行和自动换行,当显示文本时,换行也不会发生。
public class InfoTextCellRenderer extends JTextArea implements ListCellRenderer {
public InfoTextCellRenderer() {
this.setFocusable(false);
}
/* (non-Javadoc)
* @see javax.swing.ListCellRenderer#getListCellRendererComponent(javax.swing.JList, java.lang.Object, int, boolean, boolean)
*/
@Override
public Component getListCellRendererComponent(JList list, Object value,
int index, boolean isSelected, boolean cellHasFocus) {
if (isSelected) {
setBackground(list.getSelectionBackground());
setForeground(list.getSelectionForeground());
} else {
setBackground(list.getBackground());
setForeground(list.getForeground());
}
setEditable(false);
setFont(list.getFont());
this.setLineWrap(true);
this.setWrapStyleWord(true);
setText(value == null ? "" : value.toString());
return this;
}
}
什么可能会阻止换行的发生?
最佳答案
在另一篇 Stack Overflow 帖子中找到了我的答案,尽管我并没有立即明确它与我的情况的相关性: https://stackoverflow.com/questions/7306295/swing-jlist-with-multiline-text-and-dynamic-height?rq=1
关于java - 换行在 JList 单元格内不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17453769/
在 Vaadin 7.0,显示时JavaBean Table 中的数据与 BeanContainer ,用新数据刷新表的正确方法是什么? 最佳答案 该表通过监听器监视表项的属性。如果您通过表的 Ite
首先,我使用的是带有 Axis2 1.6.2 的 eclipse,我正在 tomcat 6 上部署我创建的 Web 服务。Web 服务是在 eclipse 中通过自上而下的方法创建的。 我被要求使对我
我已将 Rails 3.1.1 应用程序升级到 Rails 3.1.3,现在,对于每个请求,它仅响应错误数量的参数(3 for 1)。不幸的是,它没有说明错误在哪里,并且应用程序跟踪为空。我认为存在一
我是一名优秀的程序员,十分优秀!