0

在我的程序中,我使用 cardLayout 在面板之间切换(每个面板都用作一个单独的类)。其中一个面板,我们称之为板,包含图形。

据我了解,面板的大小适合窗口大小或 jframe,所以当我调整窗口大小时,jpanel 大小和其中的图形也会改变大小。

调整大小时如何将图形放置在窗口的中心?或者据我所知,如何将 jpanel 定位在中心,以便它包含的图形也将位于窗口的中心?

我在程序中使用的图形可能是简单的方形网格(单元格数量是固定的),这是代码,COLS 和 ROWS 是常量,而 SIZE(单元格大小)调整为窗口大小,可以改变:

       g.setColor(Color.LIGHT_GRAY);
        for( int i = 1; i < COLS; i ++ ){
            for( int j = 1; j < ROWS; j ++ ){
                g.drawLine(0, j*SIZE, COLS*SIZE, j*SIZE);
                g.drawLine(i*SIZE, 0, i*SIZE, ROWS*SIZE);
            }
        }
4

2 回答 2

1

可能的解决方案:

  • 从paintComponent 方法中获取您的JPanel 的宽度和高度,并使用此信息来缩放您的图形。
  • 将您的绘图 JPanel 嵌套在另一个 JPanel 中,这是一个使用 GridBagLayout 的“包装器”JPanel。如果在绘图上添加了 JPanel 而没有 GridBagConstraints,它将保持集中在包装 JPanel 中。
于 2013-05-19T20:11:35.633 回答
0

如果我想画一条以一定长度为中心的线,我会确定我正在画的这个东西的宽度有多大。如果它是 50 并且我的面板宽度是 800,我会使用 400 - 25 或 375 作为开始绘制的起点。所以我不是从 0 开始绘制,而是从起点开始绘制。如果我要并排绘制 8 个东西并且我希望整个 8 个居中,我会得到填充的总大小,作为我正在绘制的大小,并再次找出我在它周围和每列上有多少空间我画了这么多。

于 2013-05-19T20:15:02.667 回答