使用swing组件中的jList时遇到问题,有用过jList的请进来一下

junpi001 2004-08-05 11:37:52
在applet程序里 添加一个jList组件jList1
jList1清单中包括"a","b","c"三个选项

如何监听jList1 程序如何知道用户选择的是哪一个
...全文
312 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
junpi001 2004-08-06
  • 打赏
  • 举报
回复
为什么用JScrollPane 也就是按上面的代码不能显示jlist

而改用JPane 可以显示jlist但jlist没有滚动条
junpi001 2004-08-06
  • 打赏
  • 举报
回复
package untitled3;

import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import javax.swing.*;
import java.util.*;

public class Applet1 extends Applet {
private boolean isStandalone = false;
GridBagLayout gridBagLayout1 = new GridBagLayout();
JScrollPane jScrollPane1 = new JScrollPane();
JList jList1 ;

//Get a parameter value
public String getParameter(String key, String def) {
return isStandalone ? System.getProperty(key, def) :
(getParameter(key) != null ? getParameter(key) : def);
}

//Construct the applet
public Applet1() {
}
//Initialize the applet
public void init() {
try {
jbInit();
}
catch(Exception e) {
e.printStackTrace();
}
}
//Component initialization
private void jbInit() throws Exception {
Vector vector =new Vector();
vector.addElement("dskfa");
vector.addElement("dskfa");
vector.addElement("dskfa");
vector.addElement("dskfa");
vector.addElement("dskfa");
vector.addElement("dskfa");
vector.addElement("dskfa");
vector.addElement("dskfa");
vector.addElement("dskfa");
vector.addElement("dskfa");
jList1 = new JList(vector);
this.setLayout(gridBagLayout1);
this.add(jScrollPane1, new GridBagConstraints(2, 0, 1, 4, 0.0, 0.0
,GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), -211, 48));
jScrollPane1.getViewport().add(jList1, null);

}
//Get Applet information
public String getAppletInfo() {
return "Applet Information";
}
//Get parameter info
public String[][] getParameterInfo() {
return null;
}
}

TNND的 运行后一个屁也没显示
以上的程序用的是JScrollPane
junpi001 2004-08-06
  • 打赏
  • 举报
回复
JScrollPane 支不支持JList啊?
我用的时JScrollPane 的add 添加的JList组件 不是用的构造函数
结果跟本就没有显示JList

nwp123 2004-08-06
  • 打赏
  • 举报
回复
我觉得可能是这两不好
this.setLayout(gridBagLayout1);
this.add(jScrollPane1, new GridBagConstraints(2, 0, 1, 4, 0.0, 0.0
,GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), -211, 48))

改用箱式布局管理器,把滚动面板加到中央,试试看。
lakesea 2004-08-06
  • 打赏
  • 举报
回复
list.addListSelectionListener(new ListSelectionListener() {
public void valueChanged(ListSelectionEvent liste) {
if(!liste.getValueIsAdjusting()) {
jButtons[0].setEnabled(true);
imageLabel.setIcon(mapImage[list.getSelectedIndex()]);
imageLabel.repaint();
}
}
});

监听器中要加入判断,这样就可以在选择时只执行一次。
当前点中的序号: list.getSelectedIndex()
当前点中的对象: list.getSelectedValue()
如果想要在列表长度超过list长度出现下拉的话:JScrollPane scrollPane = new JScrollPane(list);
junpi001 2004-08-06
  • 打赏
  • 举报
回复
还有个问题

JList 组件 应该支持下拉列表吧?
我弄了一个JList 当JList的高度不能全部显示所有行时 并没有下拉列表的出现 为什么?
Vector vectorJlist = new Vector();
vectorJlist.addElements("1");
vectorJlist.addElements("2");
.
.
.
vectorJlist.addElements("12");

JList jlist1 = new JList(vectorJlist);
// 当jlist1的高度不能全部显示所有行 怎样弄出下拉列表啊?
ukulele8656 2004-08-05
  • 打赏
  • 举报
回复
还有一个办法给程序注册一个MouseListener,
public void mouseClicked(MouseEvent e)
{
if(e.getSource() == list)
{
int index = list.getSelectedIndex();
}
}
ztc16627 2004-08-05
  • 打赏
  • 举报
回复

list.addListSelectionListener(this);

public void valueChanged(ListSelectionEvent e) {
JList theList = (JList)e.getSource();
int index = theList.getSelectedIndex(); //得到用户选择的选项
}
kally 2004-08-05
  • 打赏
  • 举报
回复
执行两次的问题使用getValueIsAdjusting来判断,因为选中时和选中结束会调用两次
kally 2004-08-05
  • 打赏
  • 举报
回复
getSelectedIndex返回选择对象的索引;
getSelectedValue返回选择的值
xiaoshu97 2004-08-05
  • 打赏
  • 举报
回复
list.addListSelectionListener(new ListSelectionListener()
{
public void valueChanged(ListSelectionEvent ee)
{
~~~~~~~~~~~~~~~
}
});
就是有个问题,你点一下JList中的项目,就执行两次~~~~~~~~~~处的代码!!!
不解啊!!1

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧