gpt4 book ai didi

java - 鼠标滚轮在 JDialog 中不滚动但在 JFrame 中工作

转载 作者:行者123 更新时间:2023-11-29 06:22:34 26 4
gpt4 key购买 nike

我遇到了一个令人沮丧的问题。我有一个应用程序,其中滚轮在 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 错误。

在带有 1 个 JDK 和 2 个 JRE 的 Windows XP-SP3 上测试:

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)

提前谢谢你,

尤利安·瑟巴诺尤

PS:这个问题不是新问题 - 代码取自论坛 ( here ),其中也提到了这个问题 - 但还没有解决方案(还)

后期编辑:jre/jdk_1.6.0_10, 1.6.0_16 也问题依旧

后期编辑 2:回到家,在 linux(Ubuntu - lucid/lynx)上进行了测试 - 都使用了来自发行版 repo 的 openjdk 和 sun-java,并且它有效(我使用了在 Windows 上编译的 .class 文件)!!! - 所以我相信我正面临在某些 Windows 配置上发生的 JRE 错误。

最佳答案

这不是错误,使用时:

 JDialog d = new JDialog(this, false);
JDialog d = new JDialog((JFrame)null, false);

您在第一个参数中使用 Frame 调用构造函数

但是在使用的时候

 JDialog d = new JDialog((JDialog)null, false);

您在第一个参数中使用 JDialog 调用构造函数

可能会造成混淆,因为两者都是 null 但即使如此,您也应该指定您想要的构造函数。

更新
在您发表评论后,我才意识到问题出在哪里 :),但我无法重现它。鼠标在对话框和框架中滚动。我在 Snow Leopard 上使用 Java 1.6

关于java - 鼠标滚轮在 JDialog 中不滚动但在 JFrame 中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2461017/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com