【问题标题】:Why does my JFileChooser appear, but is empty?为什么我的 JFileChooser 出现了,但是是空的?
【发布时间】:2016-06-01 09:27:34
【问题描述】:

我正在通过 Rhino JS 编写 Java 脚本来制作 Swing 应用程序。我有一个名为openJMenuItem,我设置了一个ActionListener,它应该会导致出现JFileChooser 对话框,然后我可以处理结果。用于制作JFileChooser 的代码是:

  open.addActionListener(function(event) {
    var fileChooser = new JFileChooser()
    fileChooser.setDialogType(JFileChooser.OPEN_DIALOG)

    print(SwingUtilities.isEventDispatchThread()) // Prints true

    var result = fileChooser.showOpenDialog(frame) // frame is a closure variable

    if(result === JFileChooser.APPROVE_OPTION) {
      print("You have chosen a file!")
    }
  })

现在,当点击open JMenuItem 时,事件会正确触发,JFileChooser 确实会打开,但它是完全空白的,如下面的屏幕截图所示:

以前有没有人经历过这种情况?有任何想法吗?如果需要,我很乐意提供更多细节。

正如@Antoniossss 提到的,调整JFileChooser 的大小确实会导致随机黑色区域。

【问题讨论】:

  • frame 是一个闭包变量 我不知道这是什么意思,但是你可以尝试使用null 来代替参数,看看是否会发生同样的事情吗?跨度>
  • @Compass > 好吧,我的意思是它是根JFrame,但它被传递给包含此代码的函数,因此匿名函数可以引用它。我试过你的建议,但没有任何改变。 :(
  • 弹出后GUI是否响应?我的意思是你可以调整大小,移动一些东西,关闭对话框吗?看起来内部事件循环没有被触发 - 不知道为什么。
  • @Antoniossss > 整个 GUI 在弹出后响应。对话框和父框架都可以调整大小/关闭,我在命令行上没有异常。如果需要,我可以提供更多详细信息。
  • @Miguel 那么这真的很奇怪。如果 GUI 是响应式的,那么一切都应该按预期工作。另一种方法是尝试删除fileChooser.setDialogType(JFileChooser.OPEN_DIALOG)

标签: java swing jfilechooser rhino


【解决方案1】:

我找到了解决方案。在调用 Rhino 的命令行上,我有 -Dsun.java2d.opengl=true。这是一个旧项目遗留下来的,似乎与我系统上的某些东西发生冲突。删除它解决了问题。非常感谢@Antoniossss 引导我朝着正确的方向前进!

【讨论】:

  • 那是我永远不会想出的东西 ;) g2k 你完成了。
猜你喜欢
  • 1970-01-01
  • 2015-04-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多