在JFrame中绘制矩形

这个程序在JFrame的左上角绘制一个正方形,不过这个正方形被挡住了,如何修改才能让它不被挡住(也就是正好出现在白色区域的左上角)还有就是这个程序最小化之后再放大,白色部... 这个程序在JFrame的左上角绘制一个正方形,不过这个正方形被挡住了,如何修改才能让它不被挡住(也就是正好出现在白色区域的左上角)
还有就是这个程序最小化之后再放大,白色部分就会变为黑色

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

public class Game
{
public static void main(String[] args)
{
GameFrame frame = new GameFrame();
}
}

class GameFrame extends JFrame //implements KeyListener
{
GameFrame()
{
setBackground(Color.white);
setSize(600, 600);
setLocation(50, 50);
setLayout(null);
setFocusable(true);
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
addKeyListener(new KeyAdapter()
{

});
setVisible(true);
}

public void paint(Graphics g)
{
int diameter = 50;
g.setColor(Color.red);
g.drawRect(250, 250, diameter, diameter);

g.setColor(Color.red);
g.drawRect(300, 300, diameter, diameter);

g.setColor(Color.red);
g.drawRect(250, 300, diameter, diameter);

g.setColor(Color.red);
g.drawRect(300, 250, diameter, diameter);

g.setColor(Color.blue);
g.fillRect(0, 0, 50, 50);
}
}
展开
 我来答
mxx2020
推荐于2016-12-01 · 超过15用户采纳过TA的回答
知道答主
回答量:34
采纳率:0%
帮助的人:0
展开全部
你是在JFrame上直接绘图了,所以(0,0)点是整个窗口的左上角,即标题栏的左上角,当然会把蓝色的正方形挡住了,建议在JFrame上加一个JPanel,然后在JPanel上绘图,注意:要将语句 setLayout(null);去掉,否则显示不出来图形。
至于最小化之后再放大,白色部分就会变为黑色的问题,在我的机器上没有出现。

代码:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

public class Game{

public static void main(String[] args) {
GameFrame frame = new GameFrame();
}
}

class GameFrame extends JFrame // implements KeyListener
{
GameFrame() {
setBackground(Color.white);
setSize(600, 600);
setLocation(50, 50);
//setLayout(null);
setFocusable(true);
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
GamePanel panel=new GamePanel();
add(panel);
addKeyListener(new KeyAdapter() {
});
setVisible(true);
}
}
class GamePanel extends JPanel {
public void paintComponent(Graphics g) {
super.paintComponent(g);
int diameter = 50;
g.setColor(Color.red);
g.drawRect(250, 250, diameter, diameter);

g.setColor(Color.red);
g.drawRect(300, 300, diameter, diameter);

g.setColor(Color.red);
g.drawRect(250, 300, diameter, diameter);

g.setColor(Color.red);
g.drawRect(300, 250, diameter, diameter);

g.setColor(Color.blue);
g.fillRect(0, 0, 50, 50);
}
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式