Java Swing – JPanel和GridLayout边距/填充
我正在努力用
Java构建一个国际象棋游戏,我目前在使用Swing完全按照我想要的方式获取GUI时遇到了一些麻烦.我正在使用GridLayout来组织一个8×8 ChessButtons网格(它覆盖JButton,以便我可以在其中存储额外的信息,如坐标).最初,ChessButtons不会出现,除非我moused over它们,但我通过将每个ChessButton放在一个单独的JPanel并将每个按钮的setPreferredSize()设置为设置的高度和宽度来解决这个问题.
现在,我的问题是每个按钮上方(和/或下方?)似乎有一个小的边距或填充.我已经确保为GridLayout设置setHgap(0)和setVgap(0),所以我很确定神秘的边缘来自按钮或JPanels.但是,我似乎无法摆脱它们,而且它们似乎会导致每个ChessButton在我老鼠的时候向上/向下移动一点点. 我意识到这个问题的描述可能有点难以想象,所以我采取了截图(使用JButtons而不是ChessButton,因此间隙更容易识别):http://img3.imageshack.us/img3/6656/jbuttonmargins.png 这是我用来初始化每个ChessButton的代码: chessBoard = new JPanel(new GridLayout(8,8,0)); chessBoard.setBorder(BorderFactory.createEmptyBorder()); for (int i = 0; i <= 65; i++) { //Create a new ChessButton ChessButton button = new ChessButton("hi"); button.setBorder(BorderFactory.createEmptyBorder()); button.setPreferredSize(new Dimension(75,75)); button.setMargin(new Insets(0,0)); //Create a new JPanel that the ChessButton will go into JPanel buttonPanel = new JPanel(); buttonPanel.setPreferredSize(new Dimension(75,75)); buttonPanel.setBorder(BorderFactory.createEmptyBorder()); buttonPanel.add(button); //Add the buttonPanel to the grid chessBoard.add(buttonPanel); } 那么,我怎样才能摆脱按钮之间的这些垂直空间呢?我对Swing比较新,所以如果答案非常明显,我很抱歉,但我很感激任何人可能提供的任何帮助!提前致谢! 解决方法
这不是正确的解决方案.没有理由使用JPanel来按住按钮.事实上,这可能是问题的原因.将它们添加到GridLayout时,按钮应显示.如果它们没有显示它可能是因为您在使GUI可见后将按钮添加到GUI.组件应该在显示之前添加到GUI中.
我不明白为什么也没有横向差距.创建JPanel时,默认情况下它使用FlowLayout,它还包含5像素的水平/垂直间隙.所以我理解为什么你可能有10像素的垂直间隙.我不明白为什么没有横向差距. 如果您需要更多帮助,请在SSCCE上展示问题. SSCCE应该使用常规的JButton.在开始使用自定义组件之前,先了解使用标准组件的基础知识.这样您就知道问题是否与您的自定义代码有关. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |