我有JPanel的子类(MyPanel),我用它在按钮之间绘制线条。绘制线条有效,但问题是,当我使用MyPanel而不是JPanel时,gridLayout不起作用。我想从gridLayout得到的是按钮之间的间距以及它们应该如何排列的选择。我已经设法将它们放在没有gridLayout的网格中,但我无法使间距工作。所以我需要帮助的是让gridLayout工作或者在没有gridLayout的情况下修复按钮之间的间距。我拥有的按钮都添加到gameBoardPanel。
编辑:这就是目前的样子:
我想要的是增加25个像素左右的按钮间距。
class MyPanel extends JPanel {//The subclass
public MyPanel(GridLayout gridLayout) {
setPreferredSize(new Dimension(400,400));
}
@Override
public void paintComponent(Graphics g) {
Graphics2D g2 = (Graphics2D) g;
if(!drawline)
super.paintComponent(g);
else{
g2.setStroke(new BasicStroke(3));
g2.draw(new Line2D.Float(c,c,c2,d2));
}
}
这也是添加按钮的面板。
gameBoardPanel=new MyPanel(new GridLayout(yAxis,xAxis,25,25));//creation of a panel using MyPanel
答案 0 :(得分:1)
使用带有间隙的GridLayout我没有问题。我不确定你的问题出在哪里,但这是一个例子。我正在使用5,5的布局,有25个间隙。
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
public class MyPanel extends JPanel{
public MyPanel() {
setLayout(new GridLayout(5, 5, 25, 25));
for (int i = 0; i < 25; i++) {
add(new JButton(" "));
}
}
private static void createAndShowGui() {
JFrame frame = new JFrame();
frame.add(new MyPanel());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGui();
}
});
}
}
我使用了您尝试使用的相同GridLayout。所以我真的没看到问题在哪里