繁体   English   中英

如何使用变量名正确绘制矩形

[英]How to correctly draw Rectangle using a variable name

我正在创建一个简单的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);
}

}

任何帮助深表感谢!

您需要首先将Main (该类)的新实例添加到JFrame paint(Graphics g)您需要调用draw(g) 我个人使用高级双缓冲,因此不会一直闪烁-> https://github.com/czipperz/CLibrary/blob/master/src/io/czipperz/github/cLibrary/game/CGameFrame.groovy#L123 (这是Groovy代码,但基本上是Java)。

我注意到您已经创建了Main类,该类在主类文件中扩展了JPanel(这不是一个好习惯),并且该类也没有在静态main类中实例化。 主要的类是这样的:

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);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM