我建立一个小型的国际象棋棋盘的战术中心保持元件尺寸,这将是一个有趣的方式来对利益(编程和国际象棋)反思。与缓冲区
一个问题我目前面临,虽然解决了,被保持的1的板宽比:1。
的Board
延伸JPanel
。由于约束问题,我选择维持棋盘的物理尺寸而不是渲染尺寸。这会在实际使用时导致更快的操作。
我想要什么它看起来像,并取得了:
我实现这虽然看起来很hackish的并且是双向飞碟标准代码差的方式(谢谢基于双向飞碟)。
public Frame() {
final JFrame frame = new JFrame("Chess");
final JPanel content = new JPanel(new BorderLayout());
final JPanel boardConfine = new JPanel(new BorderLayout());
final Board board = new Board();
boardConfine.addComponentListener(new ComponentAdapter() {
@Override
public void componentResized(ComponentEvent e) {
int min = Math.min(boardConfine.getWidth(), boardConfine.getHeight());
int xBuffer = (boardConfine.getWidth() - min)/2;
int yBuffer = (boardConfine.getHeight() - min)/2;
board.setBounds(xBuffer, yBuffer, min, min);
}
});
boardConfine.add(board, BorderLayout.CENTER);
content.setBackground(new Color(205, 205, 205));
content.add(boardConfine, BorderLayout.CENTER);
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.setContentPane(content);
frame.pack();
frame.setVisible(true);
}
如上所示,我手动设置电路板的尺寸和位置。即使我已经详尽地指出,这不应该做,但我找不到工作的解决方案。我需要电路板来填充最大可能区域,但仍保持宽高比。
如果有,你可以提供什么建议(代码或概念),我真的很感谢您抽出宝贵的时间来帮助我解决这个难题精英。
如果您的主板开出的角球被定义为任何宽度分钟|高度,然后我没有看到你的代码的任何问题。 – TwoThe
@TwoThe'虽然没有布局管理器是可以做到的,但如果可能的话,您应该使用布局管理器。'我所做的是不使用布局管理器。虽然我使用了边界布局,但是通过使用'null'布局,这些方法可以实现相同的结果。因此这是不好的代码。 – Obicere