JPanel没有正确调整
问题描述:
我想制作一种策略游戏,并且我无法获得JPanel来填充整个JFrame。我已经看过论坛,其他没有关于此的帖子对我有所帮助。这里是我的代码:JPanel没有正确调整
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class FCG extends JPanel{
static JFrame frame = new JFrame("Fleet Commander Greg");
static JPanel panel = new JPanel();
static JLabel ship = new JLabel();
public static void main(String[] args) {
ship.setIcon(new ImageIcon("/Users/Alexander/workspace/Fleet Commander Greg/src/res/sprite_1.png"));
ship.setBounds(32,32,0,0);
panel.add(ship);
frame.getContentPane().add(panel);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(1800,900);
frame.setVisible(true);
}
}
任何帮助将不胜感激,谢谢。 - 超级良好的编码器,将某一天统治宇宙
编辑: 好了,我懂了工作,(有点),但仍然有框架的顶部和图像的顶部之间的一些景观。这是我的主要方法:
stars.setIcon(new ImageIcon("/Users/Alexander/workspace/Destroy the World/res/stars_1.png"));
stars.setBounds(0,0,400,500);
panel.add(stars);
frame.setLayout(new BorderLayout());
frame.add(panel);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400, 500);
frame.setVisible(true);
我不知道它为什么这样做,它应该从我所见过的很好。 谢谢你 - 不是很好打码机如果你想在JPanel中充满整个JFrame的人永远接管宇宙
答
,然后给构图
setLayout(new GridLayout(1,1));
(如果你只有此JPanel )。也不要忘记使用
getContentPane().add(panel);
如果你有你的框架或框架内的面板的几种其他的事情嵌套在一些其他的东西,然后使用网格布局上以最大化的大小。
+0
一个框架的默认布局是一个BorderLayout。将组件添加到框架而未指定约束时,组件将转到CENTER。 CENTER将占据框架的所有可用空间。坚持使用BorderLayout。它使您可以选择将工具栏添加到框架或状态栏。无需将帧限制为单个组件。另外,由于JCK4不再需要使用getContentPane()。您可以直接将组件添加到框架,并将其添加到内容窗格中。 – camickr
我不明白你的问题。您将包含图像的标签添加到框架。标签确实占据了所有的空间。但是,图像将以其实际大小绘制。即图像不会自动缩放以填充帧的大小。 – camickr