java - 标题栏是否占用了jframe的一些空间?

标签 java swing jframe

我正在创建一个贪吃蛇游戏,其中使用尺寸为 600x600JFrame,但我可以绘制的实际区域要小一些。

当我尝试在右下角绘制像素时,它出现在窗口边框后面。

我像这样创建了我的JFrame:

public class Problem {
public static void main(String[] args) {
    Snake snake = new Snake();
    EventQueue.invokeLater(new Runnable() {
        @Override
        public void run() {
            JFrame gameWindow = new JFrame("Snake");
            gameWindow.add(snake);
            gameWindow.setSize(600, 600);
            gameWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            gameWindow.setLocationRelativeTo(null);
            gameWindow.setVisible(true);
        }
    });
}
private static class Snake extends JPanel {
    protected void paintComponent(Graphics g) {
        Graphics2D g2D = (Graphics2D) g;
        g2D.drawLine(599, 599, 599, 599);
    }
}

}

如何解决我的问题?

最佳答案

我以前的解决方案是正确的,但我修改了我的代码以更好地适合您的示例。您应该做的是为您的 Snake 对象设置首选大小,将其添加到框架并为您的框架调用包(顺序很重要!)。

import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Graphics;
import java.awt.Graphics2D;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class Problem {
    public static void main(String[] args) {
        Snake snake = new Snake();
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                JFrame gameWindow = new JFrame("Snake");
                snake.setPreferredSize(new Dimension(600, 600));
                gameWindow.add(snake);
                gameWindow.pack();
                gameWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                gameWindow.setLocationRelativeTo(null);
                gameWindow.setVisible(true);
            }
        });
    }

    private static class Snake extends JPanel {
        @Override
        protected void paintComponent(Graphics g) {
            Graphics2D g2D = (Graphics2D) g;
            g2D.drawOval(549, 549, 50, 50);
        }
    }

我已将您的 Snake 对象更改为绘制圆形,因为它可以更好地显示框架边框。您的实现在框架的右下边缘绘制了一个点(不是一条线!),很难看到。 }

关于java - 标题栏是否占用了jframe的一些空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59733094/

相关文章:

java - 替换字符串中的一个字符

java - 不断改变JLabel的背景颜色

java - JFrame 中的 JScrollPane

java - 如何设计新图形以添加到 JFrame 表单中?

java - 从线程创建附加线程的最有效方法是什么?

java - 我是否必须为调用方法的计数器创建整数?

java - 如何从单词中删除元音并打印出来?

java - 向 JPanel 添加透明渐变?

java - JFrame getRootPane() 返回 Null

java - 扩展 JFrame - "super"关键字如何工作?