[英]how do i rearrange my jbuttons to to be in to rows at the top
我的 jbuttons 在不對稱的行中。 我希望它們在頂部對稱排成兩行,因為我認為那樣看起來會更好。 我該怎么做? 這是我的代碼。
package com.company;
import javax.swing.*;
import java.awt.*;
class Fantasyrpglifesim {
private static int count = 1;
public static void main(String[] args) {
JFrame frame = new JFrame();
JPanel mainPanel = new JPanel();
JPanel westPanel = new JPanel();
JPanel eastPanel = new JPanel();
JButton age = new JButton("Age up");
mainPanel.add(age);
JButton character = new JButton("Character");
mainPanel.add(character);
JButton worldmap = new JButton("World map");
mainPanel.add(worldmap);
JButton setings = new JButton("Settings");
mainPanel.add(setings);
JButton jobs = new JButton("Jobs");
westPanel.add(jobs);
JButton manegement = new JButton("Management");
westPanel.add(manegement);
JButton family = new JButton("Relationships");
westPanel.add(family);
JButton cfafting = new JButton("Crafting");
westPanel.add(cfafting);
JButton newgame = new JButton("New game");
eastPanel.add(newgame);
JButton titorial = new JButton("tutorial");
eastPanel.add(titorial);
JButton log = new JButton("Log");
eastPanel.add(log);
JButton acheiments = new JButton("Achievements");
eastPanel.add(acheiments);
for (int x=0; x<14;x++){
}
westPanel.setVisible(true);
eastPanel.setVisible(true);
frame.getContentPane().add(BorderLayout.NORTH,mainPanel);
frame.getContentPane().add(BorderLayout.WEST,westPanel);
frame.getContentPane().add(BorderLayout.EAST,eastPanel);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(1285, 678);
frame.setVisible(true);
}
}
我試過重新排列 jPanel,但沒有用。 我只想讓他們成排。
您應該使用 GridLayout 將組件排列在矩形網格中。
以下示例具有一列兩行的 GridLayout。 由於 FlowLayout 是 JPanel 的默認布局管理器,因此它只是將按鈕排成一行。
JPanel row1Panel = new JPanel();
JPanel row2Panel = new JPanel();
mainPanel.setLayout(new GridLayout(2,1));
mainPanel.add(row1Panel);
mainPanel.add(row2Panel);
JButton age = new JButton("Age up");
row1Panel.add(age);
JButton character = new JButton("Character");
row1Panel.add(character);
JButton jobs = new JButton("Jobs");
row2Panel.add(jobs);
JButton manegement = new JButton("Management");
row2Panel.add(manegement);
Oracle 有一個有用的教程,使用 Swing 創建 GUI 。 跳過學習 Swing 和 NetBeans IDE 部分。 請特別注意在容器內布置組件部分。
我重新安排了您的代碼並創建了以下 GUI。
我使用GridLayout
來創建JButton
JPanel
。
我將JFrame
的創建與JPanel
的創建分開了。 這使代碼更易於閱讀和理解,並允許我一次專注於 GUI 的一部分。
這是完整的可運行代碼。
import java.awt.BorderLayout;
import java.awt.GridLayout;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
public class Fantasyrpglifesim implements Runnable {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Fantasyrpglifesim());
}
@Override
public void run() {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(createButtonPanel(), BorderLayout.NORTH);
frame.pack();
frame.setLocationByPlatform(true);
frame.setVisible(true);
}
private JPanel createButtonPanel() {
JPanel panel = new JPanel(new GridLayout(0, 6, 5, 5));
panel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
JButton age = new JButton("Age up");
panel.add(age);
JButton character = new JButton("Character");
panel.add(character);
JButton worldmap = new JButton("World map");
panel.add(worldmap);
JButton setings = new JButton("Settings");
panel.add(setings);
JButton jobs = new JButton("Jobs");
panel.add(jobs);
JButton manegement = new JButton("Management");
panel.add(manegement);
JButton family = new JButton("Relationships");
panel.add(family);
JButton cfafting = new JButton("Crafting");
panel.add(cfafting);
JButton newgame = new JButton("New game");
panel.add(newgame);
JButton titorial = new JButton("tutorial");
panel.add(titorial);
JButton log = new JButton("Log");
panel.add(log);
JButton acheiments = new JButton("Achievements");
panel.add(acheiments);
return panel;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.