gpt4 book ai didi

java - 框架内有 2 个 J 面板。左侧面板是带有按钮的菜单。使用按钮切换右面板。

转载 作者:行者123 更新时间:2023-12-02 04:32:44 25 4
gpt4 key购买 nike

我正在尝试编写一个始终有 2 个面板的程序。左侧面板将是一个带有按钮的菜单,而右侧面板将根据任一面板中按下的按钮而变化。

现在我被困住了。单击“recipeRolodexButton”时没有任何反应。我想要发生的是,右侧面板要么被删除并被我的面板方法替换,要么被另一个面板覆盖。

public class Window extends JFrame implements ActionListener{


private static final long serialVersionUID = 1L;


//Buttons
JButton recipeRolodexButton = new JButton("Recipe Rolodex");
JButton groceryFinanceButton = new JButton("Grocery Finance");
JButton testButton1 = new JButton("Test Button");

JPanel homeLeftPanel = new JPanel();

JPanel homeRightPanel = new JPanel();
RolodexOptionsPane rop = new RolodexOptionsPane();

public static void main(String[] args){
new Window();
}

public Window(){

//declarations
Toolkit tk = Toolkit.getDefaultToolkit();
Dimension dim = new Dimension();
dim = tk.getScreenSize();
GridBagConstraints gbcl = new GridBagConstraints();



//setting up the window
this.setVisible(true);
this.setSize(550,300);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setTitle("Food Management");
int xPosition = ( (dim.width / 2) - this.getWidth() / 2);
int yPosition = ( (dim.height / 2) - (this.getHeight() / 2));
this.setLocation(xPosition, yPosition);
this.setLayout(new GridBagLayout());
this.setResizable(false);

//Add Action Listeners
recipeRolodexButton.addActionListener(this);;
groceryFinanceButton.addActionListener(this);
testButton1.addActionListener(this);

//Setting up Main Panels
homeLeftPanel.setBackground(Color.BLUE);
homeLeftPanel.setLayout(new GridBagLayout());
homeRightPanel.setBackground(Color.BLACK);
homeRightPanel.setLayout(new GridBagLayout());

// setting the Button constraints in the main Left Panel buttons
gbcl.anchor = GridBagConstraints.CENTER;
gbcl.fill = GridBagConstraints.HORIZONTAL;
gbcl.gridy = 0;
gbcl.gridx = 0;
gbcl.ipady = 4;
gbcl.insets = new Insets(15,0,0,0);
homeLeftPanel.add(recipeRolodexButton,gbcl);
gbcl.gridy = 1;
homeLeftPanel.add(groceryFinanceButton, gbcl);
gbcl.gridy = 2;
homeLeftPanel.add(testButton1, gbcl);

// setting up the buttons in the main right panel



// EXECUTION!!!!!!!!!!!!
PanelSet(homeLeftPanel,homeRightPanel);

}

public void PanelSet(JPanel left , JPanel right){

GridBagConstraints gbcLeft = new GridBagConstraints();
GridBagConstraints gbcRight = new GridBagConstraints();

//positioning the panels
gbcLeft.fill = GridBagConstraints.BOTH;
gbcLeft.gridx = 0;
gbcLeft.gridy = 0;
gbcLeft.weightx = .15;
gbcLeft.weighty = .5;

gbcRight.fill = GridBagConstraints.BOTH;
gbcRight.gridx = 1;
gbcRight.gridy = 0;
gbcRight.weightx = .85;


this.add(left,gbcLeft);
this.add(right,gbcRight);
}


public void actionPerformed(ActionEvent e) {
if(e.getSource() == recipeRolodexButton){
PanelSet(recipeRolladexButton,rop);

}

}



}

抱歉间距问题。当复制我的代码时,缩进丢失了。

最佳答案

while the right panel will change depending on the buttons pushed in either panel.

您应该使用 Card Layout对于右侧面板。然后,当您单击按钮时,您只需指定要显示的面板的名称,CardLayout 将完成其余的工作。

本教程有一个工作示例,展示了如何在从组合框中选择项目时交换面板。

关于java - 框架内有 2 个 J 面板。左侧面板是带有按钮的菜单。使用按钮切换右面板。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31235780/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com