【问题标题】:Java Swing JPanel size not workingJava Swing JPanel 大小不起作用
【发布时间】:2015-06-12 16:42:04
【问题描述】:
    frame = new JFrame();
    frame.setTitle("Chess Legends");
    frame.setBounds(100, 100, 810, 830);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    //game panel
    panelGame = new JPanel();
    panelGame.setBackground(new Color(0, 0, 0));
    frame.getContentPane().add(panelGame, BorderLayout.CENTER);
    panelGame.setLayout(null);

    //board panel
    panelBoard = new JPanel();
    panelBoard.setBackground(new Color(255, 255, 255));
    panelBoard.setBounds(5, 5, 800, 800);
    panelGame.add(panelBoard);

这是我的代码。我希望 panelGame 填充整个框架。然后我希望 panelBoard 在 panelGame 中占用 800x800 大小。但是我的 panelBoard 似乎太大了。

框架已经大于 panelBoard 的边界,但是当 GUI 启动时.. 我的 panelBoard 延伸到框架之外。为什么?

【问题讨论】:

    标签: java swing layout jpanel size


    【解决方案1】:

    我的面板延伸到框架之外。为什么??

    框架具有占用空间的装饰(边框、标题栏)。

    不要使用空布局,也不要尝试对尺寸进行微观管理。而是使用布局管理器和 pack() 框架并让布局管理器确定大小。

    如果您希望面板为 800 x 800,则覆盖 getPreferredSize() 方法以返回该尺寸。

    然后你做这样的事情:

    PanelBoard panelBoard = new PanelBoard(); // with overridden getPreferredSize()
    
    JPanel panelGame = new JPanel( new BorderLayout() );
    panelGame.setBorder( new EmptyBorder(5, 5, 5, 5) );
    panelGame.add( panelBoard );
    
    frame.add( panelGame );
    frame.pack();
    frame.setVisible();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多