Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么Swing JScrollPane没有';鼠标滚轮没有反应?_Java_Swing_Awt_Jscrollpane - Fatal编程技术网

Java 为什么Swing JScrollPane没有';鼠标滚轮没有反应?

Java 为什么Swing JScrollPane没有';鼠标滚轮没有反应?,java,swing,awt,jscrollpane,Java,Swing,Awt,Jscrollpane,我有以下Swing UI结构 当我在蓝色JPanel中滚动鼠标滚轮时,JScrollPane不会响应鼠标滚轮事件。为什么? 我从java文档中读到: JScrollPane提供了轻量级组件的可滚动视图。。。 请注意,JScrollPane不支持重量级组件 这是因为我的结构太重了吗?还是其他原因 加1 我不小心用鼠标中键切换了窗口。在那之后,鼠标滚轮突然为JScrollPane工作 这让我想到可能与焦点相关。然后我发现下面一行: this.setFocusableWindowState(fals

我有以下Swing UI结构

当我在蓝色JPanel中滚动鼠标滚轮时,JScrollPane不会响应鼠标滚轮事件。为什么?

我从java文档中读到:

JScrollPane提供了轻量级组件的可滚动视图。。。 请注意,JScrollPane不支持重量级组件

这是因为我的结构太重了吗?还是其他原因

加1 我不小心用鼠标中键切换了窗口。在那之后,鼠标滚轮突然为JScrollPane工作

这让我想到可能与
焦点相关。然后我发现下面一行:

this.setFocusableWindowState(false);
当我把它改为下面的时候,鼠标滚轮工作了

this.setFocusableWindowState(true);
尽管javadoc说:

将窗口的聚焦状态设置为false是标准 应用程序向AWT标识窗口的机制 将用作浮动调色板或工具栏,因此应为 非聚焦窗口

首先,我想这是因为JDialog没有处于可聚焦窗口状态,所以它不能接收事件。但实际上,鼠标点击总是有效的。所以我仍然不确定根本原因

工具栏或浮动调色板似乎无法聚焦,但仍然可以接收鼠标单击事件。因此,我猜可能只有某些事件被
setFocusableWindowsState(false)
过滤关于组件重量大:AWT组件是指使用操作系统小部件的组件。使用swing JComponents,J*。Swing组件被称为轻量级组件,因为它们在一个大型本机窗口中模拟所有绘图和事件处理

JPanel应该比JScrollPane大,因此可以滚动“查看端口”。正确设置首选尺寸

总的来说,我会认为每个JTextPane都有自己的JScrollPane

JScrollPane的功能也有点不同

scrollPane = new JScrollPane(panel);

为了更快地获得更好的帮助,可以发布一个(最小完整的可验证示例)或(简短、自包含、正确的示例)。“这是因为我的结构太重了吗?”如果是5000个文本窗格的话。问题可能是文本窗格正在使用鼠标滚轮事件。没有任何问题,包括滚动子级,例如父级JScrollPane中的JScrollPane,默认情况下JTextPane从不使用()这些事件,投票决定在没有SSCCE/MCVE、短、可运行、可编译、,如果JTextPane/(Xxx)Document/(Xxx)EditorKit没有硬编码值,则“正确设置首选大小”。请参见(是)。如果使用HTML内容,内容可以在CSS中显示宽度,而CSS又会显示高度。如果这个条件(HTML内容)在这里不适用,那么最好覆盖而不是设置文本窗格的首选大小。顺便说一句,我在读它的前几次时误解了第一句话的意思,只是因为单词的顺序不符合我的预期。现在我确实明白了写的是什么,还有一个。:)哦,对不起,在写最后的评论和投票之间,我有点心烦意乱虽然到今天还没有清晰的风格,但还是有那么重。欢迎反馈;不相关的观点。可能类似“重量级组件”的意思是AWT组件(例如
java.AWT.Panel
java.AWT.TextArea
)使用操作系统小部件,不像Swing软件包中的“轻量级组件”,比如
javax.Swing.JPanel
javax,Swing.JTextPane
,如上所示,我仍然更喜欢你关于Swing组件的第二句话,而不是我刚才写的那句话的结尾P..也许可以保持原样。:)