在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);
}
} 展开
还有就是这个程序最小化之后再放大,白色部分就会变为黑色
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);
}
} 展开
1个回答
展开全部
你是在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);
}
}
至于最小化之后再放大,白色部分就会变为黑色的问题,在我的机器上没有出现。
代码:
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);
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询