簡體   English   中英

我如何重新排列我的 jbuttons 以使其位於頂部的行中

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM