Java swing布局,3个面板
所以我想在业余时间制作我的第一个java小游戏。我的布局有问题 我希望游戏是一个特定的大小(600高,800宽),我想在主框架内3“面板”。一个是主游戏框架,高度为500,宽度为600,右侧是库存/信息面板,高度为500,宽度为200,最后是底部的文本面板,用于保存高度为100,宽度为800的信息。到目前为止,这是我所拥有的。(我没有调整面板的高度,因为我发现没有任何变化) 我将如何着手制作一个框架,其中有3个面板。我看了一下如何使用GridBagLayout(),但似乎我把它弄得更糟了,而且不完全理解如何使用它,即使有文档(是的,我很笨) 如果你不理解我的部分代码或我的帖子,请点击LMK。多谢各位Java swing布局,3个面板,java,swing,Java,Swing,所以我想在业余时间制作我的第一个java小游戏。我的布局有问题 我希望游戏是一个特定的大小(600高,800宽),我想在主框架内3“面板”。一个是主游戏框架,高度为500,宽度为600,右侧是库存/信息面板,高度为500,宽度为200,最后是底部的文本面板,用于保存高度为100,宽度为800的信息。到目前为止,这是我所拥有的。(我没有调整面板的高度,因为我发现没有任何变化) 我将如何着手制作一个框架,其中有3个面板。我看了一下如何使用GridBagLayout(),但似乎我把它弄得更糟了,而且不
package Frame;
import java.awt.BorderLayout;
import java.awt.Canvas;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class frame {
//Sets variables such as height, width and title
private JFrame frame;
private Canvas canvas;
private JPanel mainWindow, infoWindow, textWindow;
//main constructor to create the frame of the game. Is called in Launcher
//Sets the parameters of the frame. User defined in main.
public frame(){
createDisplay();
}
//sets the properties of the display
private void createDisplay() {
frame = new JFrame();
frame.setLayout(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
frame.setTitle("Island Man");
frame.setSize(800, 600);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setResizable(false);
frame.setVisible(true);
canvas = new Canvas();
canvas.setSize(new Dimension(800, 600));
canvas.setMaximumSize(new Dimension(800, 600));
canvas.setMinimumSize(new Dimension(800, 600));
mainWindow = new JPanel();
mainWindow.setBackground(Color.CYAN);
c.fill = GridBagConstraints.HORIZONTAL;
c.gridx = 0;
c.gridy = 0;
c.weightx = 2;
c.weighty = 2;
frame.add(mainWindow, c);
infoWindow = new JPanel();
infoWindow.setBackground(Color.GREEN);
c.fill = GridBagConstraints.HORIZONTAL;
c.gridx = 3;
c.gridy = 0;
c.weightx = 0;
c.weighty = 2;
frame.add(infoWindow, c);
textWindow = new JPanel();
textWindow.setBackground(Color.MAGENTA);
c.fill = GridBagConstraints.HORIZONTAL;
c.gridx = 3;
c.gridy = 0;
c.weightx = 0;
c.weighty = 3;
frame.add(textWindow, c);
frame.add(canvas);
frame.pack();
}
}
一种方法是使用边框布局,主面板在中间,库存面板在东部,文本面板在南部。确保设置每个面板的首选尺寸 一种方法是使用边框布局,主面板在中间,库存面板在东部,文本面板在南部。确保设置每个面板的首选尺寸
我如何制作一个具有这3个尺寸面板的框架 有太多的方法可以做到这一点。I最直接的方法是为每个面板设置相应的尺寸,并将其添加到主面板,然后将主面板添加到框架:
public static void main(String[] args)
{
SwingUtilities.invokeLater(new Runnable(){
@Override
public void run(){
JFrame frame = new JFrame("Game");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new MainPanel());
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
要使用的确切布局取决于
- 您希望如何安排您的子面板,以及
- 当调整帧的大小并进行调整时,您希望它们如何反应
- 您希望如何排列面板中的构件
public static void main(String[] args)
{
SwingUtilities.invokeLater(new Runnable(){
@Override
public void run(){
JFrame frame = new JFrame("Game");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new MainPanel());
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
我如何制作一个具有这3个尺寸面板的框架 有太多的方法可以做到这一点。I最直接的方法是为每个面板设置相应的尺寸,并将其添加到主面板,然后将主面板添加到框架:
public static void main(String[] args)
{
SwingUtilities.invokeLater(new Runnable(){
@Override
public void run(){
JFrame frame = new JFrame("Game");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new MainPanel());
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
要使用的确切布局取决于
- 您希望如何安排您的子面板,以及
- 当调整帧的大小并进行调整时,您希望它们如何反应
- 您希望如何排列面板中的构件
public static void main(String[] args)
{
SwingUtilities.invokeLater(new Runnable(){
@Override
public void run(){
JFrame frame = new JFrame("Game");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new MainPanel());
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
你的问题是什么?我如何制作一个具有这三个尺寸面板的框架?我看了一下,发现GridBagLayout()很好用,但我遇到了一些问题。正如FredK提到的,使用setPreferredSize。不要在面板上调用setSize;布局管理器负责尺寸,并将删除您的设置。您是否刚刚更改了对每个面板尺寸的要求?您的问题是什么?如何制作具有这3个面板尺寸的框架?我看了一下,发现GridBagLayout()很好用,但我遇到了一些问题。正如FredK提到的,使用setPreferredSize。不要在面板上调用setSize;布局管理器负责管理大小,并清除您的设置。您是否改变了您对每个面板尺寸的要求?所以我试过了,但是在中间我得到了一个巨大的灰色空间,而且尺寸不正确。谢谢,这对我来说是最容易的。所以我试过了,但是在中间我得到了一个巨大的灰色空间,而且尺寸不正确。谢谢,这对我来说是最简单的。加上一个,但更好的是BoxLaoyut,因为FlowLayout荣誉getPreferredSize和no不能与容器一起调整大小,请注意我如何将最后一个青色框放在橙色和黄色框下?@AmirAC青色面板不在任何面板下。它们只是并排躺着。它位于右侧,因为我最后添加了它。加上一个,但更好的是BoxLaoyut,因为FlowLayout荣誉getPreferredSize和no不能与容器一起调整大小,请注意,我如何将最后一个青色框放在橙色和黄色框下?@AmirAC青色面板不在任何面板下。它们只是并排躺着。它在右边,因为我最后加的。