我正在尝试使用setColor(c)
和fillRect(x, y, dx, dy)
Graphics
方法绘制棋盘。我希望它可以根据窗口的修改进行调整,但保持正方形的形状。此外,我希望它被放置在包围面板的中间。
如下所示,最后一例并非如此。除此之外,一切都很好。
JFrame
分为两个JPanel,使用GridBagLayout
保持3:1的比例。上部单元格使用fill = GridBagConstraints.BOTH
。因此相应的upperPanel
被拉伸为红色边框显示。upperPanel
包含另一个仅用于棋盘本身的JPanel boardPanel
。这部分肯定是错的,但我不知道如何解决它。 一个。 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)
中绘制的图形。
setColor(c)
和fillRect(x, y, dx, dy)
是在paintComponent(Graphics g)
的{{1}}方法中循环完成的,从boardPanel
开始。每次通过x=0, y=0
的{{1}}和getWidth()
上的计算调用此方法时,都会确定棋盘格单元边的长度(因为getHeight()
是upperPanel
中的嵌套类1}})。有没有办法让boardPanel
适应其中的内容?因此upperPanel
是电路板实际图像的大小。我想boardPanel
的布局会把它放在自己的中心。