我在一个协同编辑系统,
白板上用JTextArea来实现文本的编辑,
但同时还得实现画图,
比如画直线,椭圆,矩形什么的,
还得可以改变这些图形得大小和位置,
用Graphics2D 来画这些图形,
那么jpanel和jTextarea要怎么个放法才能实现我要得功能
最后就象word一样,可以画图也可以写问题。
就象是在jTextArea上画一样。

解决方案 »

  1.   

    这个东东很复杂。首先,如果想达到象word一样图文一起显示,不能用JTextArea,而要用JTextPane。
    其次,即使用JTextPane,也不能做到既能编辑文字,又能画图。你需要另外作一个部件,专门画图,并把画好的图显示到JTextPane里。如果内容少的话,用Graphics2D也能做到。但是很麻烦,你需要自己画光标,记住每个文本很图形的位置及内容。倒是也有简单办法(也不简单)。在一个JPanel中,使用JTextArea或JTextField编辑显示文字,使用JLabel画图。
    把JPanel的布局管理器设置为null。选择要放置的部件,JTextField或JLabel,在点击鼠标时创建并放置到JPanel,使用鼠标还可以拖动这些子部件。
    然后,你就可以在JTextField上写字,在JLabel上画图(当然,是继承JLabel,画图代码自己写)。
    每个子部件能记忆自己的内容,JPanel记忆每个部件的类型和位置,以便存档。计算机性能好,内容不多的情况下,这应该是个最好的办法。
    如果你是初学者的话,建议放弃。
      

  2.   

    楼主说的我看得不是很明白如果是作个白板上面可以画图也可以写字class DrawPanel extends Panel implements MouseListener作白板,监视鼠标坐标,如果鼠标选取了文字工具且在白板上某点按下,则在该点生成个JLabel即可JLabel换行可以在里面加<br>
      

  3.   

    To: diannaomingong(电脑民工)
    你怎么编辑JLabel里的文字?自己写代码?那为什么不直接用JTextField或JTextArea呢?
      

  4.   

    To UnAgain:在一个JPanel中,使用JTextArea或JTextField编辑显示文字,使用JLabel画图。请问要怎么把直线画在jlabel上呢?
      

  5.   

    问下楼上的,图画在panel上什么意思?
    UnAgain的方法不是把图画在jlabel上吗?
      

  6.   

    UnAgain你Q多少?
    能不能加我下,谢谢
    886922
      

  7.   

    我知道要怎么做了
    只要把jTextArea设置为透明的,这样画在jpanel上的图案就可以看到了,
    通过监听鼠标的动作来改变图案的大小就可以了
    我刚才试了下画在jlabel上,
    但是由于jTextArea没设为透明,
    所以还是看不到效果谢谢UnAgain,也谢谢diannaomingong
      

  8.   

    我不用QQ,我用MSN:[email protected]