由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Linux版 - 请教一个 JList + JScrollPane 的问题 (转载)
相关主题
adjust mouse scrolling speedanybody has this issue too? :)
damn 这个玩艺爽 12" nano bookscreen下的滚屏问题
为啥我的virtualbox界面没有window manager了?土了,才发现 emacs 可以看 pdf ... (转载)
贡献一个很简短的vi Manualubuntu 13.10出来了
Screen 的 scrollbar 咋调出来?Ubuntu/Mint下鼠标滚轮键不工作?
Tweak Google Interface, Disable Tracking, Enable Infinite Scrolling and More with GoogleMonkeyRJava里如何把一个webservice的返回读到一个String里? (转载)
有没有办法sed question: add a new line for every 2 chars in a string
Ubuntu 9.10 中用emacs的问题问个C的typedef问题
相关话题的讨论汇总
话题: string话题: jlist
进入Linux版参与讨论
1 (共1页)
l***y
发帖数: 4671
1
【 以下文字转载自 Java 讨论区 】
发信人: lummy (河马·云何), 信区: Java
标 题: 请教一个 JList + JScrollPane 的问题
发信站: BBS 未名空间站 (Wed Oct 24 22:40:56 2012, 美东)
Jlist 的 model 是运行中动态生成的。
当内容比较多时,scroll bar 并没变窄,而且拖到底并没有完全显示所有的 items。
把窗口向下拉长可以看到更多的 items。而且当窗口长过一定长度时 scroll bar 消失
。。。
貌似是 scroll bar 认为的 model 的长度比实际的要短得多。不知道该咋办。。。
多谢多谢!
r****y
发帖数: 26819
2
贴code吧
有没有revalidate和repaint?
话说你怎么写上这个了。。。

【在 l***y 的大作中提到】
: 【 以下文字转载自 Java 讨论区 】
: 发信人: lummy (河马·云何), 信区: Java
: 标 题: 请教一个 JList + JScrollPane 的问题
: 发信站: BBS 未名空间站 (Wed Oct 24 22:40:56 2012, 美东)
: Jlist 的 model 是运行中动态生成的。
: 当内容比较多时,scroll bar 并没变窄,而且拖到底并没有完全显示所有的 items。
: 把窗口向下拉长可以看到更多的 items。而且当窗口长过一定长度时 scroll bar 消失
: 。。。
: 貌似是 scroll bar 认为的 model 的长度比实际的要短得多。不知道该咋办。。。
: 多谢多谢!

l***y
发帖数: 4671
3
实验了一下,没 work:
private void populateDrugList(){
DefaultListModel tmpModel = new DefaultListModel();
if (SharedData.drugIDs.size() == SharedData.drugDescs.size()){
for (int i = 0; i < SharedData.drugIDs.size(); i++) {
tmpModel.addElement(SharedData.drugIDs.get(i)+" "+
SharedData.drugDescs.get(i));
}
}
drugList.setModel(tmpModel);
drugList.revalidate();
drugList.repaint();
drugScrollPane.revalidate();
drugScrollPane.repaint();
}

【在 r****y 的大作中提到】
: 贴code吧
: 有没有revalidate和repaint?
: 话说你怎么写上这个了。。。

r****y
发帖数: 26819
4
用setModel就不用revalidate和repaint了。
我这里测试没问题。
就拿着ListDemo现成的例子:
http://docs.oracle.com/javase/tutorial/uiswing/examples/compone
class里声明个变量:
private ArrayList personList = new ArrayList();
把actionPerformed改成:
public void actionPerformed(ActionEvent e) {
populateDrugList();
}
populateDrugList跟你定义的几乎一样:
private void populateDrugList(){
DefaultListModel model = new DefaultListModel();
personList.add("new person1");
personList.add("new person2");
personList.add("new person3");
for(String p : personList){
model.addElement(p);
}
list.setModel(model);
}
运行时先随便输入点啥,然后重复点Hire就可以。

【在 l***y 的大作中提到】
: 实验了一下,没 work:
: private void populateDrugList(){
: DefaultListModel tmpModel = new DefaultListModel();
: if (SharedData.drugIDs.size() == SharedData.drugDescs.size()){
: for (int i = 0; i < SharedData.drugIDs.size(); i++) {
: tmpModel.addElement(SharedData.drugIDs.get(i)+" "+
: SharedData.drugDescs.get(i));
: }
: }
: drugList.setModel(tmpModel);

l***y
发帖数: 4671
5
我开始用小数据集来实验,17 行的,貌似没问题。后来上三千多行的,就悲剧了。。。

【在 r****y 的大作中提到】
: 用setModel就不用revalidate和repaint了。
: 我这里测试没问题。
: 就拿着ListDemo现成的例子:
: http://docs.oracle.com/javase/tutorial/uiswing/examples/compone
: class里声明个变量:
: private ArrayList personList = new ArrayList();
: 把actionPerformed改成:
: public void actionPerformed(ActionEvent e) {
: populateDrugList();
: }

r****y
发帖数: 26819
6
那我改成这样运行也没问题:
private void populateDrugList(){
DefaultListModel model = new DefaultListModel();
for(int i = 0; i < 5000; i ++) {
personList.add("new person" + i);
}
for(String p : personList){
model.addElement(p);
}
list.setModel(model);
}
scrollbar不会变更窄,但是scrollPosition会不断上升。

。。

【在 l***y 的大作中提到】
: 我开始用小数据集来实验,17 行的,貌似没问题。后来上三千多行的,就悲剧了。。。
r****y
发帖数: 26819
7
啊,我知道了,如果一直setSelectedIndex为0,就看不到任何变化,尽管list变长了。
你把selectedIndex改成最后一个,再加ensureIndexIsVisible,就会很有成就感了。

。。

【在 l***y 的大作中提到】
: 我开始用小数据集来实验,17 行的,貌似没问题。后来上三千多行的,就悲剧了。。。
l***y
发帖数: 4671
8
赞!刚刚也加到 3000,sample 的确没问题。在实验你说的。。。

了。

【在 r****y 的大作中提到】
: 啊,我知道了,如果一直setSelectedIndex为0,就看不到任何变化,尽管list变长了。
: 你把selectedIndex改成最后一个,再加ensureIndexIsVisible,就会很有成就感了。
:
: 。。

1 (共1页)
进入Linux版参与讨论
相关主题
问个C的typedef问题Screen 的 scrollbar 咋调出来?
为什么bash file执行的结果与直接在命令行执行的结果不一样Tweak Google Interface, Disable Tracking, Enable Infinite Scrolling and More with GoogleMonkeyR
看看这个 C 代码有没有办法
how to change to number in multiple strings of a file?Ubuntu 9.10 中用emacs的问题
adjust mouse scrolling speedanybody has this issue too? :)
damn 这个玩艺爽 12" nano bookscreen下的滚屏问题
为啥我的virtualbox界面没有window manager了?土了,才发现 emacs 可以看 pdf ... (转载)
贡献一个很简短的vi Manualubuntu 13.10出来了
相关话题的讨论汇总
话题: string话题: jlist