JFrame的大小不正确

时间:2014-12-21 14:18:13

标签: java swing jframe

我正在用Java创建一个乒乓球游戏。我最初有一个未修饰的 JFrame,宽度 700 高度 400 。后来我改变主意,转而使用装饰框架。错误是装饰框架中顶部30px 的球偏离屏幕 。我测量了屏幕,装饰时确实是700 x 400;但是,我需要将球绘制的区域为700 x 400,而不是整个JFrame。我该怎么办?

我如何设置框架的大小:

this.setSize(new Dimension(WIDTH, HEIGHT));

我很乐意根据请求发布解决此问题所需的所有代码。

修改

import java.awt.Dimension;
import javax.swing.JComponent;
import javax.swing.JFrame;

public class Tester extends JFrame {

    public Tester() {
        this.add(new Window());
        pack();

        addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                formMouseClicked(evt);
            }
        });
    }

    private void formMouseClicked(java.awt.event.MouseEvent evt) {                                  
        System.out.println("X: " + evt.getX() + ", Y: " + evt.getY());
    }  

    public static void main(String[] args) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Tester().setVisible(true);
            }
        });
    }

    public class Window extends JComponent {

        @Override
        public Dimension getPreferredSize() {
            return new Dimension(300, 300);
        }
    }
}

1 个答案:

答案 0 :(得分:2)

  

我该怎么办?

在添加到框架的面板中执行自定义绘画。这样坐标就像你期望的那样。使用此方法的另一个好主意是覆盖getPreferredSize()以返回可查看播放区域的大小,然后pack()框架以获得内容的完美大小。