當前位置:首頁 » 編程語言 » java畫

java畫

發布時間: 2025-02-12 08:01:00

Ⅰ 關於java中畫圖形的paint方法

代碼如下:

/**分析下例:我們只是new了一個對象並沒有調用Paint()方法那為什麼會畫出圖呢?
* Graphics這個類的對象就是一隻畫筆,當某容器調用paint()時就會在該容器中畫圖。
* 當窗口產生時本身就存在一隻畫筆,我們只需要拿到畫筆重寫Paint()便可以隨心作畫。
*每次需要重畫的時候就會自動調用paint(Graphics g)(什麼時候需要重畫呢?如當窗口被覆蓋又重新置頂時,當窗口最小化又最大化時等等)
*/

總結:我們想要在容器中畫圖時只需要做的就是:在該容器中重寫Paint()系統會自動傳給我們畫筆,自動調用paint方法按照我們的意願進行作畫。
public class TestGraphics extends Frame. {
public static void main(String []args) {
new TestGraphics("畫圖",100,100,200,200,Color.white);
}
public TestGraphics(String s,int x,int y,int w,int h,Color c) {
super(s);
this.setBounds(x, y, w, h);
this.setBackground(c);
this.setVisible(true);
}
public void paint(Graphics g) {
Color c = g.getColor();
g.setColor(Color.magenta);
g.fillOval(100, 100, 50, 50);
g.setColor(Color.green);
g.fill3DRect(60, 100, 50, 50, false);
g.setColor(c);
}
}

import java.awt.*;
import java.awt.event.*;
import java.util.*;
/**
原理是:在Frame中增加成員變數-容器ArrayList,用它來容納點,每次點擊滑鼠就觸發了事件:往容器中添加一個點,然後立即調用repaint方法強制畫出容器中所有的點來
所以我們利用容器來"裝"點,然後通過iterator來遍歷畫出所有的點。

適配器類:使用適配器類可以只重寫我們需要的方法

因為這些適配器類都已經實現了相應的介面即把所有的方法都空實現了一遍 我們只需要重寫我們需要的方法即可

repaint -調用- update() - 調用- paint();

*/

public class MyFrame. extends Frame. {
ArrayList<Point>al ;//泛型指定容器中只能放入Point
public MyFrame(String s) {
super(s);
al =new ArrayList<Point>();
this.setBounds(100, 100, 200, 200);
this.setBackground(Color.darkGray);
this.setVisible(true);
this.addMouseListener(new MouseAdapter(){//匿名類
@Override
public void mousePressed(MouseEvent e) {
MyFrame. f = (MyFrame)e.getSource();//e是事件,e.getSource()是獲取事件源即窗口 f
f.al.add(new Point(e.getX(),e.getY())); //而e.getX(),e.getY()則是獲取事件發生的x,y坐標
repaint();//每次點擊滑鼠觸發事件時都有了新的點,所以強制要求重畫,才能立刻顯示出該點否則只有窗口被最小化又最大化後才能看到剛才的點
}
});

//匿名類:在參數處我們傳遞的是new WindowAdapter() {匿名類體} );他沒有名字,我們把它當成WindowAdapter來用,為什麼可以這樣呢?因為語法上規定了匿名類要麼是實現了前面的介面,要麼是從前面的類繼承,就著前面父類的名字來寫類體。當此類與其他類關系不大時可以用匿名類
this.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
public void paint(Graphics g) {
Iterator <Point>it= al.iterator();//泛型指定取出元素時只能是point
while(it.hasNext()) {
Point p = it.next();//由於使用泛型這時候就不用強制轉換了
Color c = g.getColor();//保護原有顏色

g.setColor(Color.pink);
g.fillOval(p.x-6, p.y-6, 12, 12);
g.setColor(c);
}
}
public static void main(String []args) {
new MyFrame("點擊");
}

}

Ⅱ 如何用java畫出心形

如果你想要嘗試用Java畫出一個心形,其實並不像單純列印幾次那麼簡單。首先,你需要理解心形曲線的基本數學表達式,比如著名的「心形線」方程:x = 16 * sin(t) * sin(t); y = 16 * (cos(t) - sin(t) * sin(t))。這里t是一個參數,取值范圍為0到2π。接下來,你需要用Java語言來實現這個方程,並在屏幕上畫出心形曲線。

為了實現這個目標,你需要使用Java的繪圖API,比如Java Swing或JavaFX。這里以Java Swing為例,首先創建一個JFrame窗口,然後在其中添加一個JPanel。接著,在JPanel中重寫paintComponent方法,通過Graphics對象來繪制心形曲線。

具體步驟如下:

1. 創建一個JFrame窗口,並設置其標題和大小。

2. 在JFrame中添加一個JPanel。

3. 重寫JPanel的paintComponent方法,用Graphics對象繪制心形曲線。

4. 在paintComponent方法中,使用for循環遍歷t的取值范圍,計算每個t對應的x和y坐標,然後通過Graphics對象的drawLine方法繪制線段。

5. 最後,調用JFrame的setVisible方法顯示窗口,運行程序,就可以看到心形曲線了。

通過上述步驟,你就可以用Java畫出一個心形。當然,這只是心形曲線的一種表現形式,你可以進一步探索其他更復雜的心形曲線方程,或者使用不同的繪圖庫來實現更復雜的效果。

值得注意的是,雖然這段代碼可以畫出心形,但它並不適合用於復雜的圖形繪制。如果你需要繪制復雜的圖形,建議使用更高級的圖形庫,如JavaFX或Processing等。

總之,用Java畫出心形並不是一件簡單的事情,它需要你掌握一定的數學知識和編程技巧。通過不斷練習,你可以提高自己的編程能力,並創作出更多有趣的作品。

熱點內容
整個伺服器搭建教程 發布:2025-02-12 11:48:16 瀏覽:579
我的世界伺服器人多的 發布:2025-02-12 11:48:12 瀏覽:347
為實現分頁存儲管理需要哪些硬體支持 發布:2025-02-12 11:46:34 瀏覽:539
編程下載線 發布:2025-02-12 11:41:48 瀏覽:210
json存儲數據 發布:2025-02-12 11:41:39 瀏覽:219
天龍八部腳本免費 發布:2025-02-12 11:30:12 瀏覽:501
卡羅拉的配置一般買哪個好一點 發布:2025-02-12 11:20:03 瀏覽:743
沒有伺服器的IP怎麼連上 發布:2025-02-12 11:19:55 瀏覽:80
編程sqs 發布:2025-02-12 11:09:55 瀏覽:239
electron脫離編譯環境 發布:2025-02-12 11:08:21 瀏覽:69