JFrame、JPanel 和 Gridlayout 问题
JFrame, JPanel, and Gridlayout Issues
作为快速概述,我的项目涉及获取一个 .txt 文件并将其转换为二维数组,然后将其绘制到 JFrame 中。在测试时,我使用了 JButtons 而不是稍后将构建的自定义 class。我有 运行 两个我不知道如何解决的错误。对于这些图片,这都是基于 2 行 16 列的网格布局。当我将 JButtons 添加到面板时,它看起来像 this.
当我将它们添加到 JFrame 时,它看起来像 this。
这是我创建 JFrame 和 JPanel 并呈现它们的代码:
/**
* This method creates a JFrame, JPanel, and then renders
* all of the level in the JFrame
*/
public void render()
{
JFrame frame = new JFrame("<Insert Title>");
//Make it full screen for any computer monitor
frame.setSize(JFrame.MAXIMIZED_HORIZ, JFrame.MAXIMIZED_HORIZ);
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setResizable(false);
frame.setUndecorated(true);
frame.setVisible(true);
JPanel panel = new JPanel(grid);
frame.setLayout(grid);
frame.add(panel);
panel.getInputMap(IFW).put(KeyStroke.getKeyStroke("ESCAPE"), "quit");
panel.getActionMap().put("quit", quit);
//Draw!
for(int row = 0; row < drawStuff.length; row++)
{
for(int col = 0; col < drawStuff[row].length; col++)
{
//Either panel.add or frame.add here
panel.add(new JButton("Row :"+row+" Col: "+col));
}
}
panel.revalidate();
panel.repaint();
}
我有什么地方做错了吗?
谢谢!
删除 frame.setLayout(grid);
- 这将允许 panel
占据框架的整个内容区域,而不是一行一列
frame.setSize(JFrame.MAXIMIZED_HORIZ, JFrame.MAXIMIZED_HORIZ)
确实没有按照您的想法去做,除非您想要一个 2x4
的框架
作为快速概述,我的项目涉及获取一个 .txt 文件并将其转换为二维数组,然后将其绘制到 JFrame 中。在测试时,我使用了 JButtons 而不是稍后将构建的自定义 class。我有 运行 两个我不知道如何解决的错误。对于这些图片,这都是基于 2 行 16 列的网格布局。当我将 JButtons 添加到面板时,它看起来像 this.
当我将它们添加到 JFrame 时,它看起来像 this。
这是我创建 JFrame 和 JPanel 并呈现它们的代码:
/**
* This method creates a JFrame, JPanel, and then renders
* all of the level in the JFrame
*/
public void render()
{
JFrame frame = new JFrame("<Insert Title>");
//Make it full screen for any computer monitor
frame.setSize(JFrame.MAXIMIZED_HORIZ, JFrame.MAXIMIZED_HORIZ);
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setResizable(false);
frame.setUndecorated(true);
frame.setVisible(true);
JPanel panel = new JPanel(grid);
frame.setLayout(grid);
frame.add(panel);
panel.getInputMap(IFW).put(KeyStroke.getKeyStroke("ESCAPE"), "quit");
panel.getActionMap().put("quit", quit);
//Draw!
for(int row = 0; row < drawStuff.length; row++)
{
for(int col = 0; col < drawStuff[row].length; col++)
{
//Either panel.add or frame.add here
panel.add(new JButton("Row :"+row+" Col: "+col));
}
}
panel.revalidate();
panel.repaint();
}
我有什么地方做错了吗?
谢谢!
删除 frame.setLayout(grid);
- 这将允许 panel
占据框架的整个内容区域,而不是一行一列
frame.setSize(JFrame.MAXIMIZED_HORIZ, JFrame.MAXIMIZED_HORIZ)
确实没有按照您的想法去做,除非您想要一个 2x4