我正面臨令人沮喪的問題。我有一個應用程序的滾輪不能在JDialog窗口中工作(但工作在JFrame中)。鼠標滾輪不在JDialog中滾動,但在JFrame中工作
下面的代碼:
import javax.swing.*;
import java.awt.event.*;
public class Failtest extends JFrame {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new Failtest();
}
});
}
public Failtest() {
super();
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setTitle("FRAME");
JScrollPane sp1 = new JScrollPane(getNewList());
add(sp1);
setSize(150, 150);
setVisible(true);
JDialog d = new JDialog(this, false);// NOT WORKING
//JDialog d = new JDialog((JFrame)null, false); // NOT WORKING
//JDialog d = new JDialog((JDialog)null, false);// WORKING - WHY?
d.setTitle("DIALOG");
d.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
JScrollPane sp = new JScrollPane(getNewList());
d.add(sp);
d.setSize(150, 150);
d.setVisible(true);
}
public JList getNewList() {
String objs[] = new String[30];
for(int i=0; i<objs.length; i++) {
objs[i] = "Item "+i;
}
JList l = new JList(objs);
return l;
}
}
我發現了一個解決方案,其存在作爲Java代碼的註釋 - 構造接收(的JDialog)null參數。
有人能夠啓發我嗎? 我認爲這是一個java錯誤。
測試在Windows XP-SP3與1 JDK和2周的JRE:
D:\Program Files\Java\jdk1.6.0_17\bin>javac -version
javac 1.6.0_17
D:\Program Files\Java\jdk1.6.0_17\bin>java -version
java version "1.6.0_17"
Java(TM) SE Runtime Environment (build 1.6.0_17-b04)
Java HotSpot(TM) Client VM (build 14.3-b01, mixed mode, sharing)
D:\Program Files\Java\jdk1.6.0_17\bin>cd ..
D:\Program Files\Java\jdk1.6.0_17>java -version
java version "1.6.0_18"
Java(TM) SE Runtime Environment (build 1.6.0_18-b07)
Java HotSpot(TM) Client VM (build 16.0-b13, mixed mode, sharing)
謝謝你在前進,
尤利安Şerbănoiu
PS:這個問題是不是新的 - 代碼從一個論壇(here),其中也提到了這個問題 - 但沒有解決它(但)
後編輯: 問題與JRE/jdk_1.6.0_10仍然存在,也1.6.0_16
稍後編輯2: 回到家裏,在Linux上測試(Ubuntu的 - 清醒/猞猁) - 都與OpenJDK的和Sun的Java從分配回購和它的作品(我使用Windows上編譯的.class文件)! - 所以我相信我正面臨着某些Windows配置上發生的JRE錯誤。
請不要給我們提問2合1。 – 2010-03-17 22:50:28
請您詳細說明一下嗎?我只是說這在某些配置(XP SP3我的情況)下不適用於JDialog,如果可能,我想知道一個解決方法。我現在知道,在某些配置(具有相同JRE的事件)上,它的工作原理是 – INS 2010-03-18 11:52:12