为什么画不出rectangle?
import java.io.*;
public class BoxFun {
public static void main (String[] args) /*throws
IOException*/ {
TwoWindows r1 = new TwoWindows ();
TwoWindows r2 = new TwoWindows ();
//System.out.println ("Enter when ready");
//System.in.read();
r1.paint();
r2.paint();
}
}
//////////////////////////////////
import javax.swing.*;
import java.awt.*;
public class TwoWindows {
private int width;
private int height;
private int x;
private int y;
private JFrame window;
private Color color;
public TwoWindows () {
window = new JFrame ("Box Fun");
window.setSize(200, 200);
width = 40;
height = 20;
x = 80;
y = 90;
color = Color.RED;
window.setVisible(true);
}
public void paint () {
Graphics g = window.getGraphics();
g.setColor(color);
g.fillRect(x, y, width, height);
}
}
我就是想画两个窗口,每个窗口中有个 rectangle,为什么在执行 boxfun之后只弹出了窗口,而没有rectangle?
------解决方案--------------------have a try
public void paint () {
Graphics g = window.getGraphics();
g.setColor(color);
g.fillRect(x, y, width, height);
window.repaint(); // use repaint to have a try
}
最好是用paintComponent
//modify here
window = new JFrame ("Box Fun") {
public void paintComponent(Graphics g) {
super.paintComponent(g);
doUserPaint(g);
}
};
//modify here
public void paint () {
window.repaint();
}
//add code here
protected void doUserPaint(Graphics g) {
g.setColor(color);
g.fillRect(x, y, width, height);
}
仅供参考
------解决方案--------------------ding
------解决方案--------------------// 1、推荐方法
// BoxFun.java
import java.io.*;
public class BoxFun {
public static void main (String[] args)
{
new TwoWindows ();
new TwoWindows ();
}
}
///////////////////////////////////////////////
// TwoWindows.java
import javax.swing.*;
import java.awt.*;
import java.awt.geom.Rectangle2D;
class TwoWindows extends JFrame
{
public TwoWindows()
{
setTitle("Box Fune");
setSize(DEFAULT_WIDTH,DEFAULT_HEIGHT);
width=40;
height=20;
x=80;
y=90;
DrawPanel panel=new DrawPanel();
getContentPane().add(panel);
color=Color.RED;
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
}
private static final int DEFAULT_WIDTH= 200;
private static final int DEFAULT_HEIGHT = 200;
private int width;
private int height;
private int x;
private int y;
private JFrame window;
private Color color;
private class DrawPanel extends JPanel
{
public void paintComponent(Graphics g)
{
super.paintComponent(g);
Graphics2D g2=(Graphics2D)g;
Rectangle2D r2d=new Rectangle2D.Double();
r2d.setFrame(x,y,width,height);
g2.setColor(color);
g2.fill(r2d);
}
}
}
//-----------------------------------------------
// 2、不推荐方法
// BoxFun.java
import java.io.*;
public class BoxFun {
public static void main (String[] args)
{
new TwoWindows ();
new TwoWindows ();