我正在编写一个paint程序,在弄清楚如何制作文本工具时遇到了一些麻烦。我想要做的是点击并拖动,使一个文本框出现在画布上。问题是,我不希望它只是一个浮动在我的画布组件上的JTextComponent。当我移动边框时,这会导致边框闪烁,当鼠标靠近文本框时,光标的某些部分看起来就像在文本框下面一样。
我要做的是创建一个JTextArea,然后根据鼠标相对于画布上文本框的位置触发mouseEvents。画布上的那个实际上只是我没有添加到任何组件中的实际JTextArea的绘制表示(使用.getGraphics())。这样做的问题是,除非组件显示在屏幕上,否则无法调用.getGraphics()。
我试图避免重新创建整个JTextComponent代码,就像这样,看起来应该很简单。
有没有人对这个问题有任何解决方案或替代方案?
发布于 2014-05-12 00:55:49
你可以做一个JTabbedPane。一个选项卡用于paint面板,另一个选项卡用于textPane。和你可以给某个按钮的动作监听器。textComponent监听器应该给paint方法的图形一个Graphics.drawString(...);这个字符串就是actionlistener提供的。在你的画图程序中移动字符串比较困难,但是你可以有一个识别鼠标拖动的mouseListener,它将设置你的Graphics.drawString(...)的新的(x,y)点;
希望这能帮上点忙。
https://stackoverflow.com/questions/23049692
复制相似问题