gpt4 book ai didi

java - 图形面板大小调整

转载 作者:行者123 更新时间:2023-12-02 02:09:01 24 4
gpt4 key购买 nike

这是更改为 JPanel 的更新代码。它正在显示显示,但即​​使通过创建一个类并尝试从命令移动它,我似乎也无法移动乌龟。

我还需要做什么才能将其显示在中心?

此外,添加我在上一个版本中所做的所有代码是否容易

谢谢

import java.awt.image.BufferedImage;
import javax.swing.BorderFactory;
import javax.swing.JFrame
import javax.swing.SwingUtilities;

{

        });
}

private static void createAndShowGUI() {
System.out.println("Created GUI on EDT? "+
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.add(new GraphicsPanel());
f.pack();
f.setVisible(true);
image.getHeight());
}

public void setballColour(Color col)
{
Graphics g = ballDisplay.getGraphics();
g.setColor(col);
g.fillRect(0, 0, ballDisplay.getWidth(), ballDisplay.getHeight()); }

@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(image, 0, 0, null);
g.drawImage(ballDisplay, xPos-Object_X_SIZE/2, yPos-Object_Y_SIZE/2, null);

// render the image on the panel.
g.drawImage(image, 0, 0, null);
g.drawImage(ballDisplay, xPos-Object_X_SIZE/2, yPos-Object_Y_SIZE/2, null); }

/**
* Constructor.
*/
public PanelMy() {

setBorder(BorderFactory.createLineBorder(Color.black));}

public Dimension getPreferredSize() {
return new Dimension(800,400);
}
{


//main drawing area
image = new Scanner(800, 400, Scanner.TYPE_INT_RGB);

最佳答案

I want to be able to resize the JTextField

private JTextField console = new JTextField(15);

上面的代码将导致文本字段自行调整大小,以容纳给定字体的“W”大小的 15 个字母(不是像素)。

For example they can type in "forward", "turnleft", "turnright", etc.

由于最大的单词只有 9 个字符,因此您应该使用:

private JTextField console = new JTextField(9);

作为最大值。

您可能会罚款 7 或 8 甚至更好。

编辑:

您的代码结构存在一些问题:

console.setForeground(Color.red);
console.setBounds(80,20,250,50);
add(console);

上面的代码是您设置控制台的大小/位置的地方。所以基本上你忽略了文本字段的“首选大小”,只是使用像 (250, 50) 这样的随机大小。

此外,由于代码中的设计问题,文本字段只会偶然出现在该位置。

@Override
public void paint(Graphics g)
{

// render the image on the panel.
g.drawImage(image, 0, 0, null);
g.drawImage(turtleDisplay, xPos-TURTLE_X_SIZE/2, yPos-TURTLE_Y_SIZE/2, null);
}

您不应该重写 JFrame 的 Paint() 方法。 JFrame 只是一个容器,不应包含任何应用程序逻辑。通过这样做,您将失去框架的默认功能,例如双缓冲和绘制子组件。

自定义绘制是通过重写 JPanel 的 paintComponent(...) 方法来完成的。第一个语句应该是 super.paintComponent(..) 以确保使用默认的绘画功能。然后将面板添加到框架中。

然后您可以将文本字段添加到此面板,它将正确显示。

阅读 Swing 教程中关于 Custom Painting 的部分了解更多信息

关于java - 图形面板大小调整,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50308119/

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