メイン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 のようなきれいなレイアウトにはなりません。