gpt4 book ai didi

Java 2D : Why won't my JPanel let me resize it?

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

好吧,我正在尝试将 JPanel 添加到 JFrame 中,如下所示:

            gameClasses[2] = new a2();
gameClasses[2].setSize(100, 100);
menu.add(gameClasses[2]);
menu.setVisible(true);

a2() 是一个单独的类,充当 JPanel,我使用 PaintComponent 向其绘制图像。 “菜单”是JFrame。我的问题是当我调用“gameClasses[2].setSize(100, 100);”时它不会调整 JPanel 的大小,但会保持相同的大小。有谁知道我做错了什么或者应该如何做,因为互联网上似乎没有其他人对此有任何问题。谢谢。

编辑:这是与菜单和a2相关的代码:

            menu.setSize(swidth / 2 + swidth / 5, sheight / 2 + sheight / 5);
menu.setLocation((swidth - menu.getWidth()) / 2, (sheight - menu.getHeight()) / 3);
menu.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
menu.setResizable(true);
menu.remove(main);
menu.add(gameClasses[0] = new a3());
menu.add(gameClasses[1] = new a4());
gameClasses[2] = new a2();
gameClasses[2].setSize(100, 100);
gameClasses[2].validate();
menu.add(gameClasses[2]);
menu.setVisible(true);

import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import javax.swing.JPanel;

@SuppressWarnings("serial")
public class a2 extends JPanel {

public static int size = 48;
public static Image grsX = Toolkit.getDefaultToolkit().getImage("tiles/grsX.png");
public static Image grsY = Toolkit.getDefaultToolkit().getImage("tiles/grsY.png");
public static Image grsX1 = Toolkit.getDefaultToolkit().getImage("tiles/grsX1.png");
public static Image grsY1 = Toolkit.getDefaultToolkit().getImage("tiles/grsY1.png");

public a2() {
System.out.println("a2 loaded...");
}

public void paintComponent(Graphics g) {
super.paintComponent(g);
//draw interface
for(int y = 0; y < a6.ay; y++) {
for(int x = 0; x < a6.ax; x++) {
g.drawImage(a5.Tile_Img.get(a5.ID_Tile.get(a6.area[x][y])), x * size, y * size, size, size, this);
if(x > 0) {
if(a6.area[x - 1][y].equals("00") && a6.area[x][y].equals("01")) {
g.drawImage(grsX, x * size, y * size, size, size, this);
}
}
if(x < a6.ax - 1) {
if(a6.area[x + 1][y].equals("00") && a6.area[x][y].equals("01")) {
g.drawImage(grsX1, x * size, y * size, size, size, this);
}
}
if(y > 0) {
if(a6.area[x][y - 1].equals("00") && a6.area[x][y].equals("01")) {
g.drawImage(grsY, x * size, y * size, size, size, this);
}
}
if(y < a6.ay - 1) {
if(a6.area[x][y + 1].equals("00") && a6.area[x][y].equals("01")) {
g.drawImage(grsY1, x * size, y * size, size, size, this);
}
}
}
}
repaint();
}

}

a3 和 a4 是一个 KeyListener 类和一个 MouseListener 类,它们都扩展了 JPanel

最佳答案

  • 布局更可能遵循首选尺寸而不是尺寸。
  • 在框架上调用 pack() 会使其成为显示内部组件所需的最小尺寸。添加完所有内容后调用它。
  • 不要调用setLayout(null)(在注释中称为“不相关”代码)。 使用布局。

关于Java 2D : Why won't my JPanel let me resize it?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8950096/

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