为什么从JComboBox中获取非常不同的行为,取决于平台(WindowsLinux)和语言(JavaJython)

为什么从JComboBox中获取非常不同的行为,取决于平台(WindowsLinux)和语言(JavaJython),第1张

概述为什么从JComboBox中获取非常不同的行为,取决于平台(Windows / Linux)和语言(Java / Jython)

我正在编写一个将最终在linux上运行的Jython应用程序。 我在windows机器上开发,当在linux上testing时,我遇到了不一致的行为。

开发机器 – windows XP,Java 6,Jython 2.5.2

testing机器 – 红帽3.4.3,Java 6,Jython 2.5.2

在windows中,使用Java或Jython,我会得到我认为是“正常的”JComboBox行为:

点击文字或箭头,名单下降。

点击所需的项目,进行select。

在linux上,我从Java获得以下行为:

点击并按住 ,列表下降。

释放所需的项目,进行select。

我也得到了一些非常奇怪的行为,比如

ComboBox本身被渲染到它应该在的窗口中,但是我点击并且列表从屏幕的左上angular下来,或者

当我单击并按住时,该列表将显示在正确的位置,但是随后必须将鼠标拖到左上angular才能进行select,就好像该列表仍然从此处放下。

做出select的唯一方法是使用向上/向下箭头键,即使如此,我仍然从(0,0)中删除列表。

在linux上,我从Jython中得到以下行为:

linux与windows中的窗口消息过程

确定来自不同设备的input

确定在C ++中是linux还是windows

任何关于为VS2008组织跨平台库的最佳方式的build议

在linux中创build一个跨平台的安装程序

点击并按住 ,列表下降。

当我向下移动鼠标时,列表项被突出显示,但它们大约有1.5行。 也就是说,直到鼠标在第三个项目的中途,第二个项目才会被突出显示。

释放鼠标button,列表消失,因为它应该,但原始项目仍然被选中,就像什么都没有发生。

同样,正确使用ComboBox的唯一方法是使用键盘,尽pipe我不能从列表中错误的位置得到同样的古怪。

这是我的Java SSCCE:

package foo; import javax.swing.*; import java.awt.*; public class Foo extends JPanel{ public Foo(){ super(new borderLayout()); String[] contents = {"Foo","bar","Baz"}; JComboBox combo = new JComboBox(contents); add(combo,borderLayout.PAGE_START); } private static voID BuildAndShow(){ JFrame mainWindow = new JFrame("Testing"); mainWindow.setDefaultCloSEOperation(JFrame.EXIT_ON_CLOSE); //Create and set up the content pane. JComponent contentPane = new Foo(); contentPane.setopaque(true); //content panes must be opaque mainWindow.setContentPane(contentPane); //display the window. mainWindow.pack(); mainWindow.setVisible(true); } public static voID main(String[] args) { SwingUtilitIEs.invokelater(new Runnable() { public voID run() { BuildAndShow(); } }); } }

这是我的Jython SSCCE:

from java.lang import Runnable from javax.swing import SwingUtilitIEs,JFrame,JComboBox from java.awt import borderLayout import time class Foo(Runnable): def run(self): mainWindow = JFrame('Test',defaultCloSEOperation = JFrame.EXIT_ON_CLOSE) mainWindow.setLayout(borderLayout()) mainWindow.add(JComboBox(["Foo","Baz"]),borderLayout.PAGE_START) mainWindow.visible = True if __name__ == "__main__": app = Foo() SwingUtilitIEs.invokelater(app) while True: time.sleep(5)

添加换行符到string,跨平台

加拿大交叉binutils到ARM

如何用phing删除符号链接?

如何在Mono中获得“友好”的串口名称并保持跨平台

跨平台C ++:使用本地string编码还是跨平台标准化?

终于真正得到了linux机器的物理访问,我一直在远程测试,一切正常。

所以事实证明,这个问题与SSH,XMing以及linux机器上的显示转发设置有关。

向任何花时间的人道歉事实证明是无法回答的问题!

总结

以上是内存溢出为你收集整理的为什么从JComboBox中获取非常不同的行为,取决于平台(Windows / Linux)和语言(Java / Jython)全部内容,希望文章能够帮你解决为什么从JComboBox中获取非常不同的行为,取决于平台(Windows / Linux)和语言(Java / Jython)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1155188.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存