Java JFrame fillRect 方法绘制错误的矩形大小

标签 java swing graphics jframe drawrectangle

我开始尝试使用 JFrame,我想要完成的第一个任务是使用 fillRect() 绘制一个 50px 的正方形。或drawRect()方法。不幸的是,程序运行后显示的是一个矩形而不是正方形。

This is defenitly not a square

我的代码:

package javaapp;

import java.awt.Graphics;
import javax.swing.JFrame;

public class JavaApp extends JFrame{

    public JavaApp() {
        setTitle("Voorbeeld");
        setSize(250, 250);
        setResizable(false);
        setVisible(true);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
    }
    public void paint (Graphics g){
        g.fillRect(0, 0, 50, 50);
    }
    public static void main(String[] args) {
        new JavaApp();
    }   
}

最佳答案

框架实际上从左上角开始。很简单,只需添加一个 JPanel 并在其上绘画即可。否则你可以调用setUndecorated(true)

class JavaApp extends JFrame {

    public JavaApp() {
        setTitle("Voorbeeld");
        setSize(250, 250);
        setResizable(false);
        setVisible(true);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        add(new JPanel() {
            protected void paintComponent(Graphics g) {
                g.setColor(Color.BLACK);
                g.clearRect(0, 0, getWidth(), getHeight());
                g.fillRect(0, 0, 50, 50);
            }
        });
    }

    public static void main(String[] args) {
        new JavaApp();
    }
}

改用paintComponent。

关于Java JFrame fillRect 方法绘制错误的矩形大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34728160/

相关文章:

java - 来自多个集合的组合算法

java - 缩放 JPanel 的图形对象并将其保存到 BufferedImage - Java

java - 设置 JPanel/JFrame 背景图片,我的第一次

java - 计算两种颜色的组合颜色(Over 运算符)

opengl - VSync=on 的非阻塞 SwapBuffers()

java - 如何使用 Java 找到字符串中第一个 "element"的索引?

java - servlet http post 和 put 方法之间的区别?

java - 如何在不使用 eclipse 等的情况下在 tomcat 中运行 spring 应用程序

java - 图形用户界面问题 : Don't Even Know Where to Begin

iPhone iOS : How to dynamically move around/resize images on top of an image background?