gpt4 book ai didi

java - JPanel 不使用 setSize 和 setPrefferedSize

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:35:45 24 4
gpt4 key购买 nike

请解释为什么它不起作用,你也可以发布解决方案来解决这个问题。非常感谢您。

public class Run extends JFrame{

/** Fields **/
static JPanel jpanel;
private int x, y;

/** Constructor **/
public Run() {
/** Create & Initialise Things **/
jpanel = new JPanel();
x = 400; y = 400;

/** JPanel Properties **/
jpanel.setBackground(Color.red);
jpanel.setPreferredSize(new Dimension(20, 30));


/** Add things to JFrame and JPanel **/
add(jpanel);

/** JFrame Properties **/
setTitle("Snake Game");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setCursor(null);
setResizable(false);
setSize(new Dimension(x,y));
setLocationRelativeTo(null);
setVisible(true);
}

/** Set the Cursor **/
public void setCursor() {
setCursor (Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
}

/** Main Method **/
public static void main(String [ ] args) {
Run run = new Run();
run.setCursor();
}
}

最佳答案

问题是,JFrame 使用了 BorderLayout,它将尝试调整内容的大小以适应父容器。虽然 BorderLayout 将尝试使用首选大小作为提示,但如果可用空间大于或小于该值,它将自动调整以允许中心内容(默认位置)填充整个可用空间父容器的。

您可以尝试使用 FlowLayoutGridBagLayout,这在更多情况下更有可能满足首选大小

看看How to layout components on containers了解更多详情

关于java - JPanel 不使用 setSize 和 setPrefferedSize,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21649366/

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