2014-12-13 45 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); 
} 
相关问题