如何使用Swing创建自定义面板布局? 导入java.awt.BorderLayout; 导入java.awt.Color; 导入java.awt.Dimension; 导入java.awt.FlowLayout; 导入java.awt.GridLayout; 导入java.awt.event.ActionListener; 导入javax.swing.*; 导入javax.swing.border.border; 导入javax.swing.border.LineBorder; 公共级战舰{ 公共静态void main(字符串[]args){ //用于保存按钮的JButton数组 JButton[]userButtons=新JButton[100]; JButton[]compButtons=新JButton[100]; //船舶标签文本 字符串shipsText=“船舶尺寸(方形)”+“承运人5” +“战列舰4”+“驱逐舰3” +“巡逻艇2号”; //绘制主窗口并设置布局 JFrame窗口=新JFrame(“战舰”); 设置窗口大小(12001900); window.getContentPane().setLayout(新的BorderLayout()); window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //绘制顶部游戏面板 JPanel gridPanTop=新的JPanel(); setLayout(新的BorderLayout()); gridPanTop.setPreferredSize(新尺寸(1300400)); 网格板。挫折地面(颜色。灰色); //顶部面板文本 JLabel ships=新JLabel(); ships.setText(shipsText); //底部面板按钮 JButton submit=新JButton(“提交”); 维度提交大小=新维度(20,20); submit.setSize(submitSize); //绘制底部游戏面板 JPanel panBottom=新的JPanel(); 盘底。背景(颜色。白色); setLayout(新的BorderLayout()); panBottom.setPreferredSize(新尺寸(200200)); 添加(提交); //设置游戏面板的位置 window.getContentPane().add(gridPanTop,BorderLayout.PAGE_START); window.getContentPane().add(panBottom,BorderLayout.CENTER); //设置网格按钮的边框 边框=新的线条边框(颜色为灰色); //网格的绘制面板 JPanel user=newjpanel(); JPanel comp=新的JPanel(); 用户背景(颜色:灰色); 公司背景(颜色为灰色); 用户订单(边框); 公司订单(边界); //设置网格嵌板的布局 setLayout(新的GridLayout(10,10)); 公司设置布局(新网格布局(10,10)); int x=userButtons.length; //将用户按钮设置为JButtons,设置大小并添加到网格 对于(int i=0;i
我有一个任务,在JavaSwing中创建下面的面板布局时遇到了很多麻烦。我没有运气使用任何布局 有人能帮我做这个布局吗 目前,代码显示以下输出:如何使用Swing创建自定义面板布局? 导入java.awt.BorderLayout; 导入java.awt.Color; 导入java.awt.Dimension; 导入java.awt.FlowLayout; 导入java.awt.GridLayout; 导入java.awt.event.ActionListener; 导入javax.swing.*; 导入javax.swing.border.border; 导入javax.swing.border.LineBorder; 公共级战舰{ 公共静态void main(字符串[]args){ //用于保存按钮的JButton数组 JButton[]userButtons=新JButton[100]; JButton[]compButtons=新JButton[100]; //船舶标签文本 字符串shipsText=“船舶尺寸(方形)”+“承运人5” +“战列舰4”+“驱逐舰3” +“巡逻艇2号”; //绘制主窗口并设置布局 JFrame窗口=新JFrame(“战舰”); 设置窗口大小(12001900); window.getContentPane().setLayout(新的BorderLayout()); window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //绘制顶部游戏面板 JPanel gridPanTop=新的JPanel(); setLayout(新的BorderLayout()); gridPanTop.setPreferredSize(新尺寸(1300400)); 网格板。挫折地面(颜色。灰色); //顶部面板文本 JLabel ships=新JLabel(); ships.setText(shipsText); //底部面板按钮 JButton submit=新JButton(“提交”); 维度提交大小=新维度(20,20); submit.setSize(submitSize); //绘制底部游戏面板 JPanel panBottom=新的JPanel(); 盘底。背景(颜色。白色); setLayout(新的BorderLayout()); panBottom.setPreferredSize(新尺寸(200200)); 添加(提交); //设置游戏面板的位置 window.getContentPane().add(gridPanTop,BorderLayout.PAGE_START); window.getContentPane().add(panBottom,BorderLayout.CENTER); //设置网格按钮的边框 边框=新的线条边框(颜色为灰色); //网格的绘制面板 JPanel user=newjpanel(); JPanel comp=新的JPanel(); 用户背景(颜色:灰色); 公司背景(颜色为灰色); 用户订单(边框); 公司订单(边界); //设置网格嵌板的布局 setLayout(新的GridLayout(10,10)); 公司设置布局(新网格布局(10,10)); int x=userButtons.length; //将用户按钮设置为JButtons,设置大小并添加到网格 对于(int i=0;i,java,swing,layout-manager,Java,Swing,Layout Manager,我有一个任务,在JavaSwing中创建下面的面板布局时遇到了很多麻烦。我没有运气使用任何布局 有人能帮我做这个布局吗 目前,代码显示以下输出: 你可能知道我是一个初学者,所以请原谅新手的错误。目前我所拥有的面板布局看起来像我所附的理想布局,但显然不是我所希望的正确布局。您可以通过不同的布局和布局组合(使用子面板)实现这一点。我会使用,这绝对是最通用的布局之一 示例代码 import java.awt.BorderLayout; import java.awt.Color; import j
你可能知道我是一个初学者,所以请原谅新手的错误。目前我所拥有的面板布局看起来像我所附的理想布局,但显然不是我所希望的正确布局。您可以通过不同的布局和布局组合(使用子面板)实现这一点。我会使用,这绝对是最通用的布局之一 示例代码
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionListener;
import javax.swing.*;
import javax.swing.border.Border;
import javax.swing.border.LineBorder;
public class BattleShipsMain {
public static void main(String[] args) {
// JButton arrays to hold buttons
JButton[] userButtons = new JButton[100];
JButton[] compButtons = new JButton[100];
// Text for ships label
String shipsText = "Ships Size (Squares)" + "Carrier 5"
+ "Battleship 4" + "Destroyer 3"
+ "Patrol Boat 2";
// Draw main window and set layout
JFrame window = new JFrame("Battle Ships");
window.setSize(1200, 1900);
window.getContentPane().setLayout(new BorderLayout());
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// Draw top game panel
JPanel gridPanTop = new JPanel();
gridPanTop.setLayout(new BorderLayout());
gridPanTop.setPreferredSize(new Dimension(1300, 400));
gridPanTop.setBackground(Color.GRAY);
// Top panel text
JLabel ships = new JLabel();
ships.setText(shipsText);
// Bottom panel buttons
JButton submit = new JButton("Submit");
Dimension submitSize = new Dimension(20, 20);
submit.setSize(submitSize);
// Draw bottom game panel
JPanel panBottom = new JPanel();
panBottom.setBackground(Color.WHITE);
panBottom.setLayout(new BorderLayout());
panBottom.setPreferredSize(new Dimension(200, 200));
panBottom.add(submit);
// Set position of game panels
window.getContentPane().add(gridPanTop, BorderLayout.PAGE_START);
window.getContentPane().add(panBottom, BorderLayout.CENTER);
// Set border for grid buttons
Border border = new LineBorder(Color.gray);
// Draw panel for grids
JPanel user = new JPanel();
JPanel comp = new JPanel();
user.setBackground(Color.gray);
comp.setBackground(Color.gray);
user.setBorder(border);
comp.setBorder(border);
// Set layout for grid panels
user.setLayout(new GridLayout(10, 10));
comp.setLayout(new GridLayout(10, 10));
int x = userButtons.length;
// Set user buttons as JButtons, set size and add to grid
for (int i = 0; i < x; i++) {
userButtons[i] = new JButton();
userButtons[i].setPreferredSize(new Dimension(40, 40));
user.add(userButtons[i]);
}
// Set computer buttons as JButtons, set size and add to grid
for (int i = 0; i < x; i++) {
compButtons[i] = new JButton();
compButtons[i].setPreferredSize(new Dimension(40, 40));
comp.add(compButtons[i]);
}
// Add panels to main frame and set visible
window.pack();
window.add(gridPanTop);
window.add(panBottom);
gridPanTop.add(user, BorderLayout.WEST);
gridPanTop.add(comp, BorderLayout.EAST);
gridPanTop.setVisible(true);
panBottom.setVisible(true);
window.setVisible(true);
user.setVisible(true);
comp.setVisible(true);
// Start main game
MainGame start = new MainGame();
}
}
生成的输出
GridBagLayout的关键部分是
在示例中,请参见如何将第一行的
rowWeigth
设置为0.6
,将第二行的0.4
设置为。根据需要调整它们(如果您喜欢相同的空间,只需将0.5
设置为两者)。您可以通过不同的布局和布局组合(使用子面板)实现这一点。我会使用,这绝对是最通用的布局之一
示例代码
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionListener;
import javax.swing.*;
import javax.swing.border.Border;
import javax.swing.border.LineBorder;
public class BattleShipsMain {
public static void main(String[] args) {
// JButton arrays to hold buttons
JButton[] userButtons = new JButton[100];
JButton[] compButtons = new JButton[100];
// Text for ships label
String shipsText = "Ships Size (Squares)" + "Carrier 5"
+ "Battleship 4" + "Destroyer 3"
+ "Patrol Boat 2";
// Draw main window and set layout
JFrame window = new JFrame("Battle Ships");
window.setSize(1200, 1900);
window.getContentPane().setLayout(new BorderLayout());
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// Draw top game panel
JPanel gridPanTop = new JPanel();
gridPanTop.setLayout(new BorderLayout());
gridPanTop.setPreferredSize(new Dimension(1300, 400));
gridPanTop.setBackground(Color.GRAY);
// Top panel text
JLabel ships = new JLabel();
ships.setText(shipsText);
// Bottom panel buttons
JButton submit = new JButton("Submit");
Dimension submitSize = new Dimension(20, 20);
submit.setSize(submitSize);
// Draw bottom game panel
JPanel panBottom = new JPanel();
panBottom.setBackground(Color.WHITE);
panBottom.setLayout(new BorderLayout());
panBottom.setPreferredSize(new Dimension(200, 200));
panBottom.add(submit);
// Set position of game panels
window.getContentPane().add(gridPanTop, BorderLayout.PAGE_START);
window.getContentPane().add(panBottom, BorderLayout.CENTER);
// Set border for grid buttons
Border border = new LineBorder(Color.gray);
// Draw panel for grids
JPanel user = new JPanel();
JPanel comp = new JPanel();
user.setBackground(Color.gray);
comp.setBackground(Color.gray);
user.setBorder(border);
comp.setBorder(border);
// Set layout for grid panels
user.setLayout(new GridLayout(10, 10));
comp.setLayout(new GridLayout(10, 10));
int x = userButtons.length;
// Set user buttons as JButtons, set size and add to grid
for (int i = 0; i < x; i++) {
userButtons[i] = new JButton();
userButtons[i].setPreferredSize(new Dimension(40, 40));
user.add(userButtons[i]);
}
// Set computer buttons as JButtons, set size and add to grid
for (int i = 0; i < x; i++) {
compButtons[i] = new JButton();
compButtons[i].setPreferredSize(new Dimension(40, 40));
comp.add(compButtons[i]);
}
// Add panels to main frame and set visible
window.pack();
window.add(gridPanTop);
window.add(panBottom);
gridPanTop.add(user, BorderLayout.WEST);
gridPanTop.add(comp, BorderLayout.EAST);
gridPanTop.setVisible(true);
panBottom.setVisible(true);
window.setVisible(true);
user.setVisible(true);
comp.setVisible(true);
// Start main game
MainGame start = new MainGame();
}
}
生成的输出
GridBagLayout的关键部分是
在示例中,请参见如何将第一行的rowWeigth
设置为0.6
,将第二行的0.4
设置为。根据您的喜好调整它们(如果您喜欢相同的空间,只需将0.5
设置为两者)。看起来像是一个空的页面。\u START
。请编辑您的问题,包括一个显示您当前方法的问题。我基本上同意@trashgood,边框布局似乎是最好的解决方案,但这取决于如果用户将GUI增大,如何分配额外的空间。谢谢大家,我将在一个空的页面上发布我很快尝试显示的更新。请编辑您的问题,包括一个显示您当前方法的页面。我基本上同意@trashgood,border layout似乎是最好的解决方案,但这取决于如果用户将GUI变大,如何分配额外的空间。谢谢大家,我将发布我很快尝试显示的更新
new GridBagConstraints(columnNumber, rowNumber, columnSpan, rowSpan, columnWeigth, rowWeigth, alignment, fillType, insets, padX, pady)