我有一个编辑器项目,在编辑器面板中我有一些用户可调整大小和可移动的面板。我通过一个单独的类 Resizable.java 定义了这些面板,它扩展了 JComponent。我正在使用 MouseInputListener,因此当用户单击 可调整大小 时,他可以移动它或调整其大小。当我将 jPanel 放入其中时,我仍然可以设法移动/调整它的大小。另一方面,如果我将 JTextArea 放入 Ressized 中,我将无法再进行操作,因为 JTextArea 会阻止我在 Ressized 上单击鼠标。我的意图是用户只有双击 JTextArea 才能编辑它,否则他应该移动/调整面板大小。 (如adobe flash/photoshop/fireworks中的文本工具)
我尝试为 JTextArea setFocusable(false) 但没有成功。
有人知道如何做到这一点吗?或者更好的实现?
抱歉我的英语不好,我希望我说清楚了。
谢谢。
最佳答案
您可以使用玻璃 Pane 来捕获鼠标事件。 Swing 教程有一个很好的示例,其中包含玻璃 Pane 和鼠标事件:
http://docs.oracle.com/javase/tutorial/uiswing/components/rootpane.html
另一种选择是将JTextArea
放入JDesktop
上的JInternalFrame
中。这将允许用户移动它并调整其大小,而不必干扰鼠标事件。 UI 也会更加直观。
关于Java Swing : Is it possible to make a component visible by user but transparent to mouse clicks?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20194247/