我的jbutton是在一个不对称的行。我希望他们是在2个对称的行在顶部,因为我认为这将看起来更好。我将如何做到这一点?这是我的代码。
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,但没有成功。我只想让它们排成行。
2条答案
按热度按时间dly7yett1#
您应该使用GridLayout在矩形网格中排列组件。
下面的例子有一列两行的GridLayout。它只是在一行中布局按钮,因为FlowLayout是JPanel的默认布局管理器。
myzjeezk2#
Oracle有一个有用的教程Creating a GUI With Swing。跳过使用NetBeans IDE学习Swing部分。特别注意Laying Out Components Within a Container部分。
我重新排列了您的代码并创建了以下GUI。
我使用了一个
GridLayout
来创建JButton
JPanel
。我将
JFrame
的创建与JPanel
的创建分开,这使得代码更易于阅读和理解,并允许我一次专注于GUI的一个部分。下面是完整的可运行代码。