【问题标题】:Lightweight Component over Heavyweight Component problem轻量级组件超过重量级组件问题
【发布时间】:2010-11-11 05:43:38
【问题描述】:

代码非常庞大,涉及许多不同的类/方法:

但这里是要点:

有一个主框架:A_Main 在主框架中选择一些东西 A:打开一个 JDialog B_Dialog 这个 B_Dialog 上面有一个 JPanel:C_Panel

此 C_Panel 包含一个文本字段和一个按钮

单击文本字段/按钮时:打开一个工具提示和另一个 JPanel:D_Panel

现在,问题是:

1) 工具提示超出 B_Dialog 的大小,因此被截断

2) 但是 D_Panel;即使它在 B_Dialog 的边界之外被完全显示

2.1) 这个D_Panel中有一些texfields和下拉菜单

2.2) 鼠标事件在此 D_Panel 项目(下拉菜单)中正常运行

2.3) 但是键盘事件不能正常工作(文本字段)

如果您能提供帮助,我会很高兴!

谢谢!

【问题讨论】:

标签: java swing awt


【解决方案1】:

这只能在较新版本的 JDK 中完成。

见,Mixing Heavyweight and Lightweight Components

【讨论】:

  • 组件在其他组件上可见;因为它没有在边缘切割。我无法在顶部的组件上使用键盘键,但它是鼠标可编辑的
【解决方案2】:

现在,当我尝试在 JAR JPanel 的文本字段中输入内容时,我无法这样做,因为它会弹出包含它的主 JDialog 的边框。

JPanel 周围添加JScrollPane,并允许它水平和垂直扩展。如果这不起作用,您可能需要自定义布局管理器,或使用默认的布局管理器之一,如 GridBagLayout

此外,您需要先获得焦点,然后才能输入文本,但这似乎不是问题所在。

【讨论】:

  • 组件在其他组件上可见;因为它没有在边缘切割。我无法在顶部使用键盘按键,但它是鼠标可编辑的。
  • 我不确定您的意思,如果您的 JPanel 是相同颜色的,除非您添加 JScrollPane,否则您将无法知道它在哪里。你介意提供一些代码吗?很难猜。
  • 为了更清楚起见,我已经编辑了这个问题。请看一下这个问题。谢谢!
猜你喜欢
  • 2012-11-25
  • 2011-11-15
  • 1970-01-01
  • 2010-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-24
  • 1970-01-01
相关资源
最近更新 更多