我想创建一个与Java swing的棋盘游戏,但我已经变得非常困惑与布局。此刻,我正试图创建用户所看到的图像。为了做到这一点,我使用了BorderLayout(我只需要使用边界网格流布局),我认为我会在东南西北部放置一些工作人员,并在中心放置基础板。问题是我必须创建道具使用JButton移动的路径(其余空间应该留空),并且该路径需要具有特定的交叉形状:http://i59.tinypic.com/eileys.png并且尺寸应该比平常小。对于初学者,我尝试过使用带有网格布局的JPanel(放在中间),但是无论我做什么(如setPreferredSize()),按钮都将调整大小以填充空间。 这是我的代码。谢谢你的时间,任何提示都会有帮助! 编辑:Java swing JButton的顺序和大小
package projtest1;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.GridLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Board extends JFrame
{
public Board()
{
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setTitle("Border Layout");
setMinimumSize(new Dimension(1280, 768));
setSize(1280, 768);
JPanel contentPane = new JPanel();
contentPane.setLayout(new BorderLayout());
contentPane.add(new JButton("North"), BorderLayout.NORTH);
contentPane.add(new JButton("South"), BorderLayout.SOUTH);
contentPane.add(new JButton("West"), BorderLayout.WEST);
contentPane.add(new JButton("East"), BorderLayout.EAST);
JPanel buttonPanel = new JPanel();
buttonPanel.setLayout(new GridLayout(3, 1, 1, 1));
buttonPanel.setSize(new Dimension (800,800));
JPanel topButtonPanel = new JPanel();
JPanel middleButtonPanel = new JPanel();
JPanel lastButtonPanel = new JPanel();
topButtonPanel.setLayout(new GridLayout(6, 3, 1, 1));
middleButtonPanel.setLayout(new GridLayout(3, 15, 1, 1));
lastButtonPanel.setLayout(new GridLayout(6, 3, 1, 1));
topButtonPanel.setSize(new Dimension (100,300));
//topButtonPanel.setMinimumSize(new Dimension (100,300));
middleButtonPanel.setSize(new Dimension (700,100));
lastButtonPanel.setSize(new Dimension (100,300));
for (int i=0; i<18; i++)
{
JButton button = new JButton("(" + i + ")");
button.setFont(new Font("",Font.BOLD,10));
button.setPreferredSize(new Dimension(4, 4));
topButtonPanel.add(button);
}
for (int i=0; i<45; i++)
{
JButton button = new JButton("(" + i + ")");
button.setFont(new Font("",Font.BOLD,10));
button.setPreferredSize(new Dimension(4, 4));
middleButtonPanel.add(button);
}
for (int i=0; i<18; i++)
{
JButton button = new JButton("(" + i + ")");
button.setFont(new Font("",Font.BOLD,10));
button.setPreferredSize(new Dimension(4, 4));
lastButtonPanel.add(button);
buttonPanel.add(topButtonPanel);
buttonPanel.add(middleButtonPanel);
buttonPanel.add(lastButtonPanel);
}
contentPane.add(buttonPanel, BorderLayout.CENTER);
setContentPane(contentPane);
}
}
+0
您确定要为此使用JButton吗?或者,只需显示图像(电路板),将MouseListener添加到显示组件,然后使用一些基本的数学运算,计算用户在电路板上的点击位置以及点击位置的基础行为。 –
+0
这是一个项目,我们被告知只使用JButtons,并且只使用flowlayout,borderlayout和gridlayout。 –
+1
然后把你复杂的gui分解成它的组成矩形,给它们所有合适的布局管理器,并将它们嵌套在一起。 –