我正在用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);
}
}
}
答案 0 :(得分:2)
我该怎么办?
在添加到框架的面板中执行自定义绘画。这样坐标就像你期望的那样。使用此方法的另一个好主意是覆盖getPreferredSize()
以返回可查看播放区域的大小,然后pack()
框架以获得内容的完美大小。