将项目添加到JList
问题描述:
我想将项目添加到我的列表中。我的列表首先由initComponent()初始化,由教师自动调用(我使用的是NetBeans,所有GUI组件都由prog自动初始化)。将项目添加到JList
我的问题是:
- 让我们说,我们有一个帧1,在这个框架,我们有一个按钮“显示图片”,当点击它
- 开放式2其中有JList的...
- 图像列表通过帧3成功添加...
下面是我的代码,我想列出所有的图像在我的名单:
private void setImagesToList()
{
***//bLayer is my Business Layer and _getNomOfSelectedImg() returns number of
//images.***
int imagesCount = bLayer._getNomOfSelectedImg();
***// through my searches i fount that i've to create ListModel to hold my items***
DefaultListModel listModel = new DefaultListModel();
if (imagesCount > 0) // there is/are image(s)
{
for(int i=0; i < imagesCount ; i++)
{
// ***i want to add image name and tooltip (image path) ***
String imgName = bLayer._getImageName(i);
String imgPath = bLayer._getImagePath(i);
listModel.add(i, imgName);
break;
}
images_List.setModel(listModel);
}
}
当我运行这段代码会抛出NullPointerException异常在最后一行images_List.setModel(listModel);
怎样做才能显示这些项目,允许多选,将鼠标点击事件?
答
是的,你可以添加工具提示。您只需在渲染器返回的组件上设置工具提示文本即可。 JList
将使用这些组件工具提示来确定正确的工具提示文本。这可以在JList#getTooltipText
执行当中我复制了相关部分
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;
}
你能不能也用这些新的问题更新您的问题可以看出,作为您的回答新问题“会浮到底部
答
我找到了我极大的错误:(:(我叫其设定的图像列表调用initComponent(前)的功能,这就是为什么抛出异常..
日Thnx所有的回答,但我有更多的问题: 1)我可以添加ToolTipText到列表项目,我想添加图像路径 2)你是什么意思关于“我的接受率”...
这个例外很明显:你得到一个NPE,因为'images_List'为空。你在哪里初始化它的价值? – assylias
@Eng巴斯马,请提高您的接受率。这将反过来增加获得好答案的变化。 – Hidde