java – JPanel不使用setSize和setPrefferedSize

前端之家收集整理的这篇文章主要介绍了java – JPanel不使用setSize和setPrefferedSize前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
请解释为什么它不起作用,也可以发布解决方案来解决这个问题.非常感谢你提前.
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将尝试使用首选大小作为提示,但如果可用空间大于或小于,则它将自动调整以允许中心内容(默认位置)填充父容器的整个可用空间.

您可以尝试使用FlowLayout或GridBagLayout,它更有可能在更多情况下遵循首选大小

有关详细信息,请查看How to layout components on containers

原文链接:https://www.f2er.com/java/121130.html

猜你在找的Java相关文章