import java.awt.Color; import java.awt.Graphics; import java.awt.Image; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JPanel; public class testStar { /** * @param args * 滿天星星圖 */ public static void main(String[] args) { // TODO Auto-generated method stub JFrame jf=new JFrame(); jf.setSize(800, 800); jf.setBackground(Color.BLACK); //jf.add(new testStar()); jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jf.setVisible(true); jf.add(new ShapesPanel()); jf.setTitle("滿天星星"); /*public void paint(Graphics g){ GraphicsDemod myGrapics=new GraphicsDemod(); myGrapics.paintComponent(g); }*/ } } class ShapesPanel extends JPanel{ public void paintComponent(Graphics g){ int placeX; int placeY; int size;//存放字體大小,星星是直接輸出的*,用字體控制起大小 //畫星星 for(int i=0;i<300;i++){ //Math是數學類,random()是Math類中的一個方法,random本身只產生(0~1)之間的小數, //random()*10 意思是產生0~10之間的小數 , //int(random()*10)的意思是強制取整,把小數部分去掉只去整數部分,所以 就變成了 產生0~9之間的整數。 placeX=(int) (800*Math.random()); placeY=(int)(800*Math.random()); size=(int)(20*Math.random()); g.setColor(Color.white); g.drawString("*", placeX, placeY);//在X,Y的位置處畫上特定的符號* } //畫月亮 placeX=(int) (750*Math.random()); g.fillOval(placeX, 100, 100, 100);//placeX,100是圓心坐標(確切說是橢圓的中心對稱點)的x,y值,后面兩個是兩條半長軸的長度。 //filloval畫的是橢圓,后面兩個相等當然就是圓了 g.setColor(Color.black); g.fillOval(placeX-20, 80, 100, 100); //畫地面 g.setColor(Color.white); g.fillOval(-400, 710, 1000, 100); Image mImage=new ImageIcon("./images/gril.png").getImage(); g.drawImage(mImage, 80, 500, 300, 300, null); } }
paint方法必須在JPanel中
程序結果圖