gpt4 book ai didi

Java JFrame 大小和中心

转载 作者:搜寻专家 更新时间:2023-11-01 02:52:57 28 4
gpt4 key购买 nike

我正在从事一个 uni 项目,该项目是使用 2d 图形形状创建一个骰子面。我已经完成了所有这些,但我有一个问题:我希望我的形状在调整窗口大小时改变大小,而不是仅仅保持静止以便它保持在中间。

我想我可以设置位置,所以它是居中的,但没有奏效。我不确定,但我是否必须编写坐标以使其随窗口改变大小?对这两个问题的任何帮助都会很棒。

GUI设置代码

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import javax.swing.JComponent;
import javax.swing.JFrame;

public class DiceSimulator {

public static void main(String[] args) {
JFrame frame = new JFrame("DiceSimulator");
frame.setVisible(true);
frame.setSize(400, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
draw object = new draw();
frame.add(object);
frame.setLocationRelativeTo(null);
object.drawing();
}
}

绘画代码

import javax.swing.*;
import java.awt.*;
//import java.util.Random;
public class draw extends JComponent {

public void drawing() {
repaint();
}

public void paintComponent(Graphics g) {
super.paintComponent(g);
//Random1 random = new Random1();

Graphics2D g2 = (Graphics2D) g;
g.setColor(Color.BLACK);
Rectangle box = new Rectangle(115, 60, 150, 150);
g2.fill(box);

g.setColor(Color.WHITE);
g.fillOval(145, 75, 30, 30);

g.setColor(Color.WHITE);
g.fillOval(205, 75, 30, 30);

g.setColor(Color.WHITE);
g.fillOval(145, 115, 30, 30);

g.setColor(Color.WHITE);
g.fillOval(205, 115, 30, 30);

g.setColor(Color.WHITE);
g.fillOval(145, 155, 30, 30);

g.setColor(Color.WHITE);
g.fillOval(205, 155, 30, 30);
}
}

最佳答案

在你需要使用的paintComponent()方法中

int width = getSize().width;
int height = getSize().height;

获取组件的当前大小,因为它在框架改变大小时改变大小。然后根据这个当前大小,您可以绘制您的组件。这意味着您不能在绘图方法中对值进行硬编码。

如果你想用一个命令移动所有绘图坐标,那么你可以使用:

g.translate(5, 5);

在方法的顶部。然后所有硬编码的 (x, y) 值将分别调整 5 个像素。这将允许您更改绘图的居中。

关于Java JFrame 大小和中心,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7628919/

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