2014-12-13 47 views
0

我創建一個簡單的Java項目,並想知道正確繪製矩形如何我可以使用像這樣的變量名稱創建一個Rectangle如何使用一個變量名

Rectangle header = new Rectangle(0, 0, 500, 100); 
Rectangle background = new Rectangle(0, 100, 500, 400); 

目前,我有這個代碼,它來填充:

public void draw(Graphics g) { 
    g.setColor(darkGreen); 
    g.fillRect(header.x, header.y, header.width, header.height); 
    g.setColor(tan); 
    g.fillRect(background.x, background.y, background.width, background.height); 
} 

但是沒有出現,當我運行的代碼,有沒有其他的錯誤,我知道的,但萬一這裏是休息:

package trivia; 

import java.awt.Color; 
import java.awt.Graphics; 
import java.awt.Rectangle; 

import javax.swing.JFrame; 
import javax.swing.JPanel; 

@SuppressWarnings("serial") 
public class Main extends JPanel{ 

static Color tan = Color.decode("#F4EBC3"); 
static Color darkGreen = Color.decode("#E9E0D6"); 
Rectangle header = new Rectangle(0, 0, 500, 100); 
Rectangle background = new Rectangle(0, 100, 500, 400); 

@Override 
public void paint(Graphics g) { 
} 

public void draw(Graphics g) { 
    g.setColor(darkGreen); 
    g.fillRect(header.x, header.y, header.width, header.height); 
    g.setColor(tan); 
    g.fillRect(background.x, background.y, background.width, background.height); 
} 

public static void main(String[] args) { 
    int HEIGHT = 500; 
    int WIDTH = 500; 
    JFrame mainFrame = new JFrame("Mini Tennis"); 
    mainFrame.setSize(HEIGHT, WIDTH); 
    mainFrame.setVisible(true); 
    mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    mainFrame.setLocationRelativeTo(null); 
} 

} 

任何幫助非常感謝!

+0

犯錯,你的代碼永遠不會創造主的任何實例,和draw()方法是從來沒有在任何地方調用,所以這不是真正令人吃驚。請注意,您必須重寫paintComponent(),這就是繪畫代碼的位置。 – 2014-12-13 08:04:52

+0

@JBNizet是的我想我已經明白了,我正在使用'JPanel'而不是'JFrame',並且在改變了一些東西之後,我似乎開始工作了! – Geroy290 2014-12-13 08:06:42

回答

0

我注意到你已經創建了類Main,它在主類文件中擴展了JPanel(這不是一個好習慣),而且這個類也沒有在靜態主類中實例化。 主類化妝這樣的:

package trivia; 


import javax.swing.JFrame; 


public class Trivia { 


public static void main(String[] args) { 
int HEIGHT = 500; 
int WIDTH = 500; 
MyPanel myPanel = new MyPanel(); 
JFrame mainFrame = new JFrame("Mini Tennis"); 
mainFrame.setSize(HEIGHT, WIDTH); 
mainFrame.setVisible(true); 
mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
mainFrame.setLocationRelativeTo(null);  
mainFrame.add(myPanel); 
mainFrame.validate(); // Don't forget to validate frame or repaint. 


} 

}

它更簡單,你有兩個文件分開。嘗試添加類的一個新的文件,以便創建例如MyPanel.java:

package trivia; 


import java.awt.Color; 
import java.awt.Graphics; 
import java.awt.Rectangle; 


import javax.swing.JPanel; 


public class MyPanel extends JPanel{ 

static Color tan = Color.decode("#F4EBC3"); 
static Color darkGreen = Color.decode("#389900"); 
Rectangle header = new Rectangle(0, 0, 500, 100); 
Rectangle background = new Rectangle(0, 100, 500, 400); 


@Override 
    public void paintComponent(Graphics g) { 
     super.paintComponent(g);  
     draw(g); 

    } 
public void draw(Graphics g) { 
    g.setColor(darkGreen); 
    g.fillRect(header.x, header.y, header.width, header.height); 
    g.setColor(tan); 
    g.fillRect(background.x, background.y, background.width, background.height); 
} 
相關問題