gpt4 book ai didi

Java 图形用户界面 : Making coordinates align properly

转载 作者:行者123 更新时间:2023-11-30 11:44:54 25 4
gpt4 key购买 nike

我正在制作一个简单的 Java Swing GUI 棋盘,玩家可以在其中拖放棋子。问题在于,由于框架周围的边框(标题在顶部、最大化/最小化/关闭按钮等),坐标会发生偏移 - (0, 0) 是框架的左上角框架,也就是说,在 X 按钮上方一点点,但是 GUI 开始在标题栏下方自行构建,因此 GUI 不与坐标对齐,事情最终不会按应有的方式工作。此外,当我将框架的大小时设置为例如 100 x 100 时,我的 GUI 的下半部分和一些右侧部分被切断,因为框架没有补偿其边框。当我将它作为小程序运行时,我没有遇到这个问题,但我不想那样做。我怎样才能摆脱我的框架窗口周围的边框,这样我就可以拥有普通的 GUI,或者让坐标自己正确设置?

sscce:

import java.awt.Point;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JFrame;

public class class1 extends JFrame{
public class1(){
addMouseListener(new MouseAdapter(){
public void mousePressed(MouseEvent evt){
System.out.print(evt.getPoint());
}
});
}

public static void main(String[] args){
class1 c = new class1();
c.setTitle("Test");
c.setSize(320, 320);
c.setLocationRelativeTo(null);
c.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
c.setVisible(true);
}
}

最佳答案

如果没有代码,很难知道你的代码有什么问题,但我知道如果你使用各种布局管理器走简单的路,让这些管理器为你布局组件和调整组件的大小事情也是如此,包括在 JFrame 上调用 pack(),通常事情很容易就位。再次强调,不要设置任何东西的大小,而是让组件的首选大小和布局管理器为您做这件事。

如果这个建议没有帮助,请给我们更多的信息和代码,最好是 sscce ,一个可编译和可运行的小程序,除了演示您的问题外什么都不做。

编辑:我假设这是一个 Swing GUI。请验证是否是这样。

编辑 2:您遇到的一个问题是您在设置 JFrame 的大小时未考虑其“装饰”,包括菜单栏、调整大小/最大化/关闭图标。同样,您不应该直接设置尺寸,但如果您必须更好地覆盖保存网格的 JPanel 的 getPreferredSize() 方法。

编辑 3:例如:

import java.awt.*;
import javax.swing.*;

public class Grid extends JPanel {
public static final Color DARK_COLOR = Color.red.darker().darker().darker();
public static final Color LIGHT_COLOR = Color.lightGray.brighter();
public static final int SQUARE_SIDE = 60;
private static final int ROW_COUNT = 8;

@Override
public Dimension getPreferredSize() {
return new Dimension(ROW_COUNT * SQUARE_SIDE, ROW_COUNT * SQUARE_SIDE);
}

@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
for (int i = 0; i < ROW_COUNT; i++) {
for (int j = 0; j < ROW_COUNT; j++) {
Color c = (i % 2 == j % 2) ? LIGHT_COLOR : DARK_COLOR;
g.setColor(c);
int x = i * SQUARE_SIDE;
int y = j * SQUARE_SIDE;
g.fillRect(x, y, SQUARE_SIDE, SQUARE_SIDE);
}
}
}

public Grid() {
// TODO Auto-generated constructor stub
}

private static void createAndShowGui() {
Grid mainPanel = new Grid();

JFrame frame = new JFrame("Grid");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(mainPanel);
frame.pack();
frame.setLocationByPlatform(true);
frame.setVisible(true);
}

public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGui();
}
});
}

}

关于Java 图形用户界面 : Making coordinates align properly,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10569191/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com