[英]Adding a JPanel to a JPanel with layouts
我有一个JPanel可以显示我的主要GUI。 在该主面板上,我想添加其他JPanels来显示项目的描述,并允许您购买和出售它。 我的主面板和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的漂亮布局。
您没有在用于SpringLayout的ItemPanel上施加任何约束,因此它不会扩展或不知道MainPanel中要占用多少空间。 当我向面板添加约束时,它出现了。 尝试添加它,看看是否出现您的面板。
springLayout.putConstraint(SpringLayout.NORTH, itemPanel, 22, SpringLayout.SOUTH, btnMakeBatch);
springLayout.putConstraint(SpringLayout.WEST, itemPanel, 43, SpringLayout.WEST, this);
springLayout.putConstraint(SpringLayout.EAST, itemPanel, -104, SpringLayout.EAST, this);
您是在手动设计,然后按“运行”以查看它,还是使用例如WindowBuilder ?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.