2012-12-14 37 views
1

我在牙科醫生的Java swing中製作桌面應用程序。在我的應用程序中,我的圖像是16位tiff灰度圖像。我在JPanel上繪製圖像。我想在myImage上添加或放置可移動的textarea。所以doctore可以在圖像上書寫並保存。所以當下次他打開圖像時,他/她可以很容易地理解患者的圖像。下面給出一個圖像的例子。如何在Java中的圖像上添加可移動的TextArea?

enter image description here

+0

@Reimeus感謝您的回覆。事實上,我的問題是,我在myapp中提供了5種測量功能,如繪製直線,曲線,形狀,角度和網格。當doctore繪製類似曲線的東西時,它會顯示在圖像上使用鼠標拖動的事件和線條列表以及曲線長度數組顯示在myapp上的一個標籤上。現在doctore想要在圖像中存儲繪製線。所以我用我的圖像的圖形對象和商店線在我的圖像。現在我想保存或寫入牙齒圖像中的字符串。所以我正在想這個。我試過Jtextfield,但對我來說工作不好。 – Jay

+0

*「試過Jtextfield,但對我來說工作不好」*發佈您的最佳嘗試[SSCCE](http://sscce.org/)。另請參閱[本答案](http://stackoverflow.com/a/5853992/418556)中的'LabelRenderTest'類,它在圖像上繪製一個'JLabel'。 –

+0

請參閱['ImageJ'](http://stackoverflow.com/tags/imagej/info)。 – trashgod

回答

2

您有幾種選擇:

  • 在一個可調整大小的容器中使用透明文本組件,說明here

  • 使用@ camickr的ComponentResizer,引用here,帶有透明文本組件。

  • 研究的現有實現方式中,如ImageJ,引here,或JHotDraw,引here

  • 使用圖示的可拖動手柄here開發自己的實現。

儘管後者更加靈活,但我傾向於傾向於組件方法以便於實現。

+1

感謝您分享您的知識。現在我正試圖在圖像上製作最好的可移動文本區域。 – Jay

0

我會重寫你的JPanel的paint方法(使它繪製圖像作爲背景)和一個JTextArea添加到它像往常一樣。這樣,您可以創建自己的Graphics對象,調用paint,然後將Graphics obj保存爲圖像。

public class MyPanel extends JPanel { 

    JTextArea myTextArea = new JTextArea(); 

    public MyPanel { 
     // ... 
     add(myTextArea, new GridBagConstraints(....)); 
     // ... 
    } 

    @Override 
    public void paint(Graphics g) { 
     g.drawImage(.....); 
     super.paint(g); 
    } 
+0

「Swing程序應該覆蓋'paintComponent()'而不是覆蓋'paint()'。」 - [* AWT和Swing中繪製:繪製方法*](http://www.oracle.com/technetwork/java/繪畫140037.html#回調)。 – trashgod

相關問題