我需要能够为我正在创建的程序显示填充的矩形,但是下面的代码生成以下GUI,只有黑色文本' test'在打电话开始然后改变,有人可以解释为什么请?
package core;
import java.awt.Color;
import java.awt.Graphics2D;
import javax.swing.JFrame;
@SuppressWarnings("serial")
public class GUI extends JFrame{
private Graphics2D g;
private int[][][] clickable;
public void start(){
this.setSize(500, 500);
this.setTitle("Placeholder");
this.setVisible(true);
g = (Graphics2D) this.getGraphics();
}
public void change(String[] fields, int type[], boolean forwards){
g.setColor(new Color(28,35,57));
g.drawRect(0, 0, 100, 100);
g.drawRect(50, 50, 150, 150);
g.fillRect(0, 0, 100, 100);
g.drawString("test", 300, 300);
}
}
这就是它的样子......
答案 0 :(得分:1)
在Swing组件上绘图(如JFrame)仅适用于onPaint事件。 可以使用repaint()方法触发该事件。 需要绘制框架时,此事件会自动触发。 要实现此事件行为,请覆盖paint()方法。
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JFrame;
public class GUI extends JFrame{
private Graphics2D g;
public void start(){
this.setSize(500, 500);
this.setTitle("Placeholder");
this.setVisible(true);
}
public void change(){
g.setColor(new Color(28,35,57));
g.drawRect(0, 0, 100, 100);
g.drawRect(50, 50, 150, 150);
g.fillRect(0, 0, 100, 100);
g.drawString("test", 300, 300);
}
public void paint(Graphics g2d){
g = (Graphics2D) g2d;
change();
}
public static void main(String[] args){
GUI frame = new GUI();
frame.start();
}
}