Java GUI-是否可以在单个主JPanel中存储JPanel?
我正在做一个学期的项目,我想知道是否有可能存储3-4个JPanel而不是一个主JPanel。我问这个问题的原因是因为我正在尝试制作一个GUI支票簿程序,我的支票簿有7个按钮,一旦我点击它就会打开一个新窗口。要在每个窗口之间切换,我必须使用CardLayout,但我对CardLayout的理解是,我只能将一个JPanel分配给该卡,因此我不能将多个JPanel分配给单个卡布局,因此当用户单击不同的卡时,会出现3-4个不同的JPanel 我之所以问这个问题,是因为我之前请求过帮助,并在这个项目中获得了创建我的第一个窗口的帮助,它完美地生成了我想要的输出,但在这样做时使用了不止一个JPanel。因为这阻止了我继续我的7个GUI窗口的其他步骤,我被卡住了 代码如下:Java GUI-是否可以在单个主JPanel中存储JPanel?,java,swing,user-interface,cardlayout,Java,Swing,User Interface,Cardlayout,我正在做一个学期的项目,我想知道是否有可能存储3-4个JPanel而不是一个主JPanel。我问这个问题的原因是因为我正在尝试制作一个GUI支票簿程序,我的支票簿有7个按钮,一旦我点击它就会打开一个新窗口。要在每个窗口之间切换,我必须使用CardLayout,但我对CardLayout的理解是,我只能将一个JPanel分配给该卡,因此我不能将多个JPanel分配给单个卡布局,因此当用户单击不同的卡时,会出现3-4个不同的JPanel 我之所以问这个问题,是因为我之前请求过帮助,并在这个项目中获得
import java.awt.*;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class checkbook extends JPanel implements ActionListener {
private static final String title = "Use The Buttons Below To Manage Transactions";
private static final String[] bottomButtons = { "Create a New Account",
"Load a Trans from a File", "Add New Transactions",
"Search Transactions", "Sort Transactions",
"View/Delete Transactions", "Backup Transaction", "Exit" };
static JButton Button[] = new JButton[8];
static ActionListener AL = new checkbook();
public checkbook() {
JLabel titleLabel = new JLabel(title, SwingConstants.CENTER);
titleLabel.setFont(titleLabel.getFont().deriveFont(Font.BOLD, 18));
JPanel titlePanel = new JPanel();
titlePanel.add(titleLabel); // put it in a JPanel so it will expand to fill BoxLayout
JTextField textfield = new JTextField();
JPanel accountBalancePanel = new JPanel();
accountBalancePanel.add(new JLabel("Account Name:"));
accountBalancePanel.add(new JTextField(10));
accountBalancePanel.add(Box.createHorizontalStrut(4));
accountBalancePanel.add(new JLabel("Balance:"));
textfield = new JTextField("0.0", 10);
textfield.setHorizontalAlignment(JTextField.RIGHT);
accountBalancePanel.add(textfield);
JPanel northPanel = new JPanel();
northPanel.setLayout(new BoxLayout(northPanel, BoxLayout.PAGE_AXIS));
northPanel.add(titlePanel);
northPanel.add(accountBalancePanel);
JPanel southBtnPanel = new JPanel(new GridLayout(2, 4, 1, 1));
for(int i = 0; i < 8; i++){
Button[i] = new JButton(bottomButtons[i]);
southBtnPanel.add(Button[i]);
Button[i].addActionListener(AL);
}
setBorder(BorderFactory.createEmptyBorder(1, 1, 1, 1));
setLayout(new BorderLayout());
add(northPanel, BorderLayout.NORTH);
add(Box.createRigidArea(new Dimension(100, 100))); // just an empty placeholder
add(southBtnPanel, BorderLayout.SOUTH);
}
private static void createAndShowGui() {
checkbook mainPanel = new checkbook();
JFrame frame = new JFrame("Checkbook");
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.getContentPane().add(mainPanel);
frame.pack();
frame.setLocationByPlatform(true);
frame.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(
new Runnable() {
public void run() {
createAndShowGui();
}
});
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource() == Button[7]) {
System.exit(0);
}
}
}
感谢装满鳗鱼的气垫船向我展示了上面的例子
如果我的问题有任何不清楚的地方,请询问,我会尽我所能解决它
下面是代码生成的内容:
请澄清:我对CardLayout的理解是,我只能为该卡分配一个JPanel,因此我不能为一个卡布局分配多个JPanel,因此当用户单击不同的卡时,会出现3-4个不同的JPanel。这句话让我非常困惑。是的,几天前,当我去请我的教授澄清我将如何制作支票簿程序的不同窗口时,他说使用卡片布局,当他给我看一个例子时,我问他是否可以在一张卡片上添加多个JPanel。如果card1和card2是JPanels contentPane.addCard1,card1 contentPane.addCard1,card2;contentPaneLayout.showContentPanel,card1因此我将card1和card2 JPanel都添加到card1中,因此当我显示card1时,两个JPanel都会出现。作为使用上述代码的示例,我希望将northPanel和southBtnPanel存储到一张卡中,以便当用户单击按钮时,它会显示我分配给该卡的所有JPanel。但是我的教授告诉我我们不能这么做,你只能给一张卡分配一个JPanel。注意:一个面板可能包含3-4个面板。我问我的教授同样的问题,如果我能将许多JPanel存储到一个JPanel中,他说你的教授不是唯一一个白痴。以第一个面板panel1为例,设置一个类似于flow布局或grid布局的布局。添加三个面板作为panel1.addpanel2;panel1.addpanel3。。