我通过向它传递一个数据数组来创建一个JList
public class MyJList extends JList() {
...
public MyJList(final Object[] listData) {
super[listData];
}
我使用ListCellRenderer渲染此列表,它为每个项目提供了一个组件,可以根据业务逻辑启用或禁用该组件。
当我尝试通过键盘箭头导航时,问题就来了。我希望跳过禁用的项目。(在适当的方向上继续下一个)我必须使用键盘管理器,因为 UI 会根据在列表中选择的项目来更改某些内容。麻烦的是,在键盘侦听器中,我无法获取具有所选索引的项目的组件。此组件不归 JList 所有,并且调用 MyJList.getComponent(index) 失败,并显示 ArrayIndexOutOfBoundsException。1 是一个太大的索引,即使我可以看到七个项目,其中四个项目已启用。
如何通过编程从JList中按索引检索组件以确定其是否已启用?唯一似乎返回组件的接口是GetListCellRenderComponent()-它更改组件的显示。我只是想让组件看看它是否被启用。
JList
不包含任何组件。呈现器返回的组件仅用作图章,但实际上并不包含在 JList
中。
您可以在表教程的“渲染器和编辑器”部分找到所有这些解释。虽然它对表进行了解释,但它也适用于JList
。
如果你想获得某个索引的“组件”,你只需要使用渲染器并向它请求一个组件。在< code > JList # getTooltipText 的源代码中可以看到这样一个例子:
public String getToolTipText(MouseEvent event) {
if(event != null) {
Point p = event.getPoint();
int index = locationToIndex(p);
ListCellRenderer<? super E> r = getCellRenderer();
Rectangle cellBounds;
if (index != -1 && r != null && (cellBounds =
getCellBounds(index, index)) != null &&
cellBounds.contains(p.x, p.y)) {
ListSelectionModel lsm = getSelectionModel();
Component rComponent = r.getListCellRendererComponent(
this, getModel().getElementAt(index), index,
lsm.isSelectedIndex(index),
(hasFocus() && (lsm.getLeadSelectionIndex() ==
index)));
if(rComponent instanceof JComponent) {
MouseEvent newEvent;
p.translate(-cellBounds.x, -cellBounds.y);
newEvent = new MouseEvent(rComponent, event.getID(),
event.getWhen(),
event.getModifiers(),
p.x, p.y,
event.getXOnScreen(),
event.getYOnScreen(),
event.getClickCount(),
event.isPopupTrigger(),
MouseEvent.NOBUTTON);
String tip = ((JComponent)rComponent).getToolTipText(
newEvent);
if (tip != null) {
return tip;
}
}
}
}
return super.getToolTipText();
}
我通过JFileChooser使用下面这段代码将一个名为test.xml的文件添加到我的JList中; 现在我必须从Jlist中选择一个文件,然后将它转换成另一个文档。如果我给出输入,转换步骤就会起作用; 但是如果我给它,它就不起作用; 列表及其向量使用以下代码段创建: 你们谁能告诉我如何从JList中选择该特定文件来进行转换吗?提前感谢…!
我在Netbeans构建了一个Java项目。我有一个表单,表单内部有一个jList,其中填充了一个对象(Favorite)。我也有一个按钮,我想当我按下按钮删除选定的项目在jList。 我正在尝试以下代码,但我得到一个错误。 我得到以下错误: 线程“AWT-EventQueue-0”中出现异常Java . lang . classcastexception:Java . lang . string
我想获取日期字段,但下面的代码没有这样做。Toast显示null(字符串日期的值)。 公共字符串日期;
我正在创建一个屏幕,上面有四个列表。基本上是两对列表,您可以在对中的一个列表上选择行,然后将它们移动到对中的另一个列表。 查看文档,我需要为每个列表提供一个ListSelectionModel来确定选择了哪些行。我将使用[Sel]或[Des]按钮来执行实际的传输。 文档和示例说我需要一个ListSelectionListener,但是,由于在用户单击按钮之前我不会访问模型,所以我实际上需要一个监听
在db.js中有一个代码片段,如下所示, 并且我想获得当我在app.js中调用函数时的结果数据,如下所示。 正如您所看到的,当我试图从db.js获取数据时,它在控制台窗口中显示“the data is undefined”。我该如何解决这个问题?有什么建议吗?
问题内容: 我有一个ResultSet返回不同类型的数据。该查询是动态构造的,因此在编译时,我不知道查询将返回哪种类型的值。 假设所有结果都是字符串,我编写了以下代码。但是我也想获取每个值的类型。我怎样才能做到这一点? 以下是我编写的代码。 此时,我想获取列类型,并根据数据类型获取值。 问题答案: 所述返回一个指定列类型值发现。 例: