Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java、swing、Gridlayout问题_Java_Swing_Grid_Grid Layout - Fatal编程技术网

java、swing、Gridlayout问题

java、swing、Gridlayout问题,java,swing,grid,grid-layout,Java,Swing,Grid,Grid Layout,我有一个网格布局的面板 但当我试图运行程序时,只显示100个按钮中的第一个按钮。 此外,只有当我将光标移到它们上面时,其余的部分才会出现。 怎么了 这是整个类的生命。CELLS=10,CellButton是一个扩展JButton的类 public class MainLayout extends JFrame { public MainLayout() { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

我有一个网格布局的面板

但当我试图运行程序时,只显示100个按钮中的第一个按钮。 此外,只有当我将光标移到它们上面时,其余的部分才会出现。 怎么了

这是整个类的生命。CELLS=10,CellButton是一个扩展JButton的类

public class MainLayout extends JFrame {

    public MainLayout() {

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(650, 750);
        setLayout(new FlowLayout());
        //setResizable(false);

        final JPanel gridPanel = new JPanel(new GridLayout(Life.CELLS, Life.CELLS));

        for (int i=0; i<Life.CELLS; i++) {
            for (int j=0; j<Life.CELLS; j++) {
                CellButton jb = new CellButton(i, j);
                jb.setPreferredSize(new Dimension(jb.getIcon().getIconHeight(), jb.getIcon().getIconWidth()));
                buttons[i][j] = jb;
                grid[i][j] = false;

                gridPanel.add(jb);
            }
        }
        add(gridPanel);
    }
}

您必须在代码中执行其他操作。请张贴您正在使用的确切代码。下面的测试显示了一个10x10的JButton网格,正如我所期望的那样

import java.awt.GridLayout;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class GridLayoutTest
{
 public static void main(String[] args)
 {
  JFrame frame = new JFrame();
  JPanel panel = new JPanel(new GridLayout(10,10,10,10));

  for (int i=0; i<100; i++)
  {
   panel.add(new JButton(String.valueOf(i)));
  }

  frame.add(panel);

  frame.setSize(600,600);
  frame.setVisible(true);
 }
}
编辑:
我看到了您的问题,您错误地重写了JComponent中的getX和getY方法。去掉你的int x和int y变量以及getX和getY方法,JButton已经提供了这些方法。

请发布你的CellButton代码。更新了我的答案。你需要摆脱你的x和y;这破坏了JComponent的布局计算。我看不出这段代码和我的代码有任何根本性的区别。
import java.awt.GridLayout;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class GridLayoutTest
{
 public static void main(String[] args)
 {
  JFrame frame = new JFrame();
  JPanel panel = new JPanel(new GridLayout(10,10,10,10));

  for (int i=0; i<100; i++)
  {
   panel.add(new JButton(String.valueOf(i)));
  }

  frame.add(panel);

  frame.setSize(600,600);
  frame.setVisible(true);
 }
}