0

メインGUIを表示するJPanelがあります。そのメイン パネルに、アイテムの説明を表示し、それを売買できるようにする他の JPanel を追加したいと考えています。メイン パネルと ItemPanel の両方に FlowLayout を使用しています。クラスは次のとおりです。

メインパネル

package me.phination.clicker.gui;

import javax.swing.JPanel;

public class MainPanel extends JPanel {

    private JLabel batchLabel;
    private JButton btnMakeBatch;
    private JButton btnSellBatch;
    private JLabel moneyLabel;
    private JTextArea textArea;
    private JPanel itemPanel;


    public MainPanel() {
        setBackground(new Color(153, 51, 0));
        SpringLayout springLayout = new SpringLayout();
        setLayout(springLayout);

            //add the item panel to this panel
        itemPanel = new ItemPanel();
        itemPanel.setSize(200, 100);
        add(itemPanel);
    }

    public void consoleMsg(String msg) {
        textArea.append(msg + "\n");
        textArea.setCaretPosition(textArea.getDocument().getLength());
    }
}

アイテムパネル

package me.phination.clicker.game;

import javax.swing.JPanel;
import javax.swing.SpringLayout;
import javax.swing.JLabel;
import javax.swing.JButton;
import java.awt.Font;

public class ItemPanel extends JPanel {
        public ItemPanel() {
                SpringLayout springLayout = new SpringLayout();
                setLayout(springLayout);

                JLabel lblItemName = new JLabel("Item name");
                lblItemName.setFont(new Font("Lucida Grande", Font.BOLD, 18));
                springLayout.putConstraint(SpringLayout.NORTH, lblItemName, 10, SpringLayout.NORTH, this);
                add(lblItemName);

                JLabel lblAmountOwned = new JLabel("Amount owned");
                springLayout.putConstraint(SpringLayout.WEST, lblAmountOwned, 10, SpringLayout.WEST, this);
                springLayout.putConstraint(SpringLayout.WEST, lblItemName, 0, SpringLayout.WEST, lblAmountOwned);
                springLayout.putConstraint(SpringLayout.SOUTH, lblAmountOwned, -10, SpringLayout.SOUTH, this);
                add(lblAmountOwned);

                JButton btnPurchase = new JButton("Purchase");
                springLayout.putConstraint(SpringLayout.NORTH, btnPurchase, 0, SpringLayout.NORTH, lblItemName);
                springLayout.putConstraint(SpringLayout.EAST, btnPurchase, -10, SpringLayout.EAST, this);
                add(btnPurchase);

                JButton btnSell = new JButton("Sell");
                springLayout.putConstraint(SpringLayout.SOUTH, btnSell, -10, SpringLayout.SOUTH, this);
                springLayout.putConstraint(SpringLayout.EAST, btnSell, 0, SpringLayout.EAST, btnPurchase);
                add(btnSell);

                JLabel lblDescription = new JLabel("Description");
                springLayout.putConstraint(SpringLayout.NORTH, lblDescription, 6, SpringLayout.SOUTH, lblItemName);
                springLayout.putConstraint(SpringLayout.WEST, lblDescription, 0, SpringLayout.WEST, lblItemName);
                add(lblDescription);
        }
}

私が抱えている問題は、ItemPanel で Spring を使用すると、それをメイン パネルに追加しても何も表示されないことです。ItemPanel でレイアウトを使用しない場合、完全に問題なく表示されますが、JFrame に単独で追加すると、ItemPanel のようなきれいなレイアウトにはなりません。

4

1 に答える 1