以下是我有什麼,我有一個的paintComponent方法在一個類中,如何使paintComponent跟隨鼠標?
public void paintComponent(Graphics g) {
g2.setPaint(Color.red);
g2.fillRect(100, 100, 50, 50);
}
我要作出這樣的圖形對象(上)跟隨我的鼠標在第二類,但我不知道該怎麼在我的第二堂課中調用它(下面),我寫了第一堂課的構造函數,但我不知道如何讓它顯示在我的框架中。附: 我和MouseMotionListener添加到我的框架
public void mouseMoved(MouseEvent e) {
GOLDraw g1 = new GOLDraw();//default constructor from the first class
repaint();
}
請就如何調用的paintComponent方法深入淺出的講解,爲什麼(我會嘗試去了解它,我不知道很多關於繼承和這樣)。可能是因爲我是初學者,而且我做錯了,讀完api和google幾小時後我什麼都沒發現。
public class GolPresets extends JComponent implements MouseMotionListener{
public GolPresets() {
}
@Override
public void mouseDragged(MouseEvent e) {
}
Point point;
@Override
public void mouseMoved(MouseEvent e){
point = e.getPoint();
}
public void paintComponent(Graphics g) {
g.drawRect(point.x, point.y, 100, 100);
}
public void GUI() {
JFrame frame = new JFrame("");
frame.setVisible(true);
frame.setSize(500, 500);
frame.add(new GolPresets());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new GolPresets());
frame.addMouseMotionListener(this);
}
public static void main(String[] args) {
GolPresets g = new GolPresets();
g.GUI();
}
}
調用'repaint'將安排在事件調度線程,一個「畫」事件,將通過一系列額外的方法調用,調用你的'paintComponent'方法。請參閱[在AWT和Swing中繪畫](http://www.oracle.com/technetwork/java/painting-140037.html)和[執行自定義繪畫](http://docs.oracle.com/javase/tutorial/) uiswing/painting /)獲取關於繪畫的工作原理的更多細節 – MadProgrammer
以下是如何使組件可拖動的方法:http://sourceforge.net/p/tus/code/HEAD/tree/tjacobs/ui/drag/Draggable.java – ControlAltDel
所以遠非如此,你提供了一堆無關聯的代碼,它沒有提供任何關於你在做什麼或者如何產生問題的線索。考慮提供一個[可運行的示例](https://stackoverflow.com/help/mcve),它可以證明你的問題。這不是代碼轉儲,而是您正在做的事情的一個例子,它突出了您遇到的問題。這將導致更少的困惑和更好的迴應 – MadProgrammer