2013-02-03 83 views
-2

編輯:好的,所以我設法讓它在朋友的幫助下工作。 =)如何在點擊鼠標點畫一個字符串到applet屏幕?


我目前正在創建一個Java小程序。該小程序通過從用戶獲取文本輸入並在按回車時將其顯示在屏幕上來工作。這是我的程序目前的工作點。 我想知道是否有一種方法可以讓它在點擊鼠標時點擊鼠標的時候繪製文本輸入/字符串。

非常感謝任何能夠幫助我的人。 :)

+1

*「如何在點擊鼠標點畫一個字符串到applet屏幕?」* [你試過了什麼?](http://www.whathaveyoutried.com/)有很多繪製事物的例子在鼠標點擊。但是,一個技巧是,首先將「JPanel」添加到「JFrame」中。只有當它被加入到JApplet中時,它才工作。 –

+0

好的,我該怎麼做? – ElementOfMagic

+0

*「我會怎麼做?」*搜索?轉到右上角的搜索框並輸入「[java] mouse」等。但是我看到@MadProgrammer提供了一個答案。順便說一句 - 不要去尋找'小程序+字符串+鼠標'。它太具體了,任何可以在applet中完成的任務都可以在一個框架中完成(這更容易開發和調試,順便說一下)。 –

回答

3

我想知道是否有辦法在我能做出這麼 單擊鼠標時,文本輸入/字符串繪製在鼠標點擊的點 。

答:是的...

難道是粗魯我離開了答案......嗎?

這是一個相對簡單的過程,這取決於你想要達到什麼樣的...

這個例子只是使用Graphics#drawString呈現文本到自定義組件。同樣,您也可以在指定點上的組件標籤處,但這是另一種蠕蟲。

enter image description here

public class TestDrawText { 

    public static void main(String[] args) { 
     new TestDrawText(); 
    } 

    public TestDrawText() { 
     EventQueue.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       try { 
        UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 
       } catch (Exception ex) { 
       } 

       JFrame frame = new JFrame("Test"); 
       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
       frame.add(new TestPane()); 
       frame.pack(); 
       frame.setLocationRelativeTo(null); 
       frame.setVisible(true); 
      } 
     }); 
    } 

    public class TestPane extends JPanel { 

     private Point textPoint; 

     public TestPane() { 
      addMouseListener(new MouseAdapter() { 
       @Override 
       public void mouseClicked(MouseEvent e) { 
        textPoint = e.getPoint(); 
        repaint(); 
       } 
      }); 
     } 

     @Override 
     public Dimension getPreferredSize() { 
      return new Dimension(200, 200); 
     } 

     @Override 
     protected void paintComponent(Graphics g) { 
      super.paintComponent(g); 
      if (textPoint != null) { 
       FontMetrics fm = g.getFontMetrics(); 
       g.drawString("You clicked at " + textPoint.x + "x" + textPoint.y, textPoint.x, textPoint.y + fm.getAscent()); 
      } 
     } 

    } 

} 

退房

欲瞭解更多信息。

+0

謝謝,但我認爲小程序沒有一個主要方法給他們? – ElementOfMagic

+1

他們不這樣做,這是一個使用'JFrame'代替的簡單例子,它更簡單和容易地演示,然後與applet混合。 – MadProgrammer

+0

哦,這是我必須使用applet來做的事情。 – ElementOfMagic