在JFrame层次结构中绘制可调整大小的方形棋盘

时间:2014-11-12 09:03:19

标签: java swing user-interface

我正在尝试使用setColor(c)fillRect(x, y, dx, dy) Graphics方法绘制棋盘。我希望它可以根据窗口的修改进行调整,但保持正方形的形状。此外,我希望它被放置在包围面板的中间。

如下所示,最后一例并非如此。除此之外,一切都很好。

what I got

  1. JFrame分为两个JPanel,使用GridBagLayout保持3:1的比例。上部单元格使用fill = GridBagConstraints.BOTH。因此相应的upperPanel被拉伸为红色边框显示。
  2. 然后此upperPanel包含另一个仅用于棋盘本身的JPanel boardPanel。这部分肯定是错的,但我不知道如何解决它。
  3. 一个。 upperPanel在其构造函数中定义了以下布局:

    setLayout(new BorderLayout());
    setBorder(BorderFactory.createLineBorder(Color.RED));
    add(boardPanel, BorderLayout.CENTER);
    

    我想在网格单元内尽可能地拉伸框架。

    boardPanel有这样的布局:

    setLayout(new BorderLayout());
    setBorder(BorderFactory.createLineBorder(Color.BLUE));
    
    坦率地说,没有其他工作。该面板仅包含在paintComponent(Graphics g)中绘制的图形。

    1. setColor(c)fillRect(x, y, dx, dy)是在paintComponent(Graphics g)的{​​{1}}方法中循环完成的,从boardPanel开始。每次通过x=0, y=0的{​​{1}}和getWidth()上的计算调用此方法时,都会确定棋盘格单元边的长度(因为getHeight()upperPanel中的嵌套类1}})。
    2. 有没有办法让boardPanel适应其中的内容?因此upperPanel是电路板实际图像的大小。我想boardPanel的布局会把它放在自己的中心。

0 个答案:

没有答案