gpt4 book ai didi

java - 如何让 JButton 知道它在哪个面板上被单击?

转载 作者:行者123 更新时间:2023-12-02 01:31:45 25 4
gpt4 key购买 nike

我正在尝试在 GUI 上模拟汽车租赁系统。由于我对 Swing 组件不太有经验,因此我决定使用 GridBagLayout 创建汽车列表。

每一行都有不同的面板,每个面板都有不同的租赁价格和汽车名称。

CarList

“详细信息”按钮由列表中的所有面板共享。我正在寻找一种方法,让“详细信息”从按下面板时获取标题和价格文本,然后将它们保存在变量中。

到目前为止,每当我按下它时,即使我按下列表中的第一个按钮,它也只会保存并发送列表中最后一个面板中的文本。

CarDetails

这是按钮的事件:

JButton btnNewButton = new JButton("details");
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String Car, price;
Car = Name.getText();
price = Price.getText();
Main.add(new CarD(Car,price), "2");
cl.show(Main, "2");
add.setVisible(false);
}
});

编辑:

按照 camickr 的示例,剩下的就是使用标签在父面板中放置的位置从父面板获取标签。

        JButton btnNewButton = new JButton("Details");
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String Car, price;
JButton button = (JButton)e.getSource();
JPanel panel = (JPanel)button.getParent();
JLabel N = (JLabel)panel.getComponentAt(202, 62);
JLabel P = (JLabel)panel.getComponentAt(202, 24);

Car = N.getText();
price = P.getText();
Main.add(new CarD(Car,price), "2");
cl.show(Main, "2");
add.setVisible(false);
}
});

最佳答案

在“详细信息”按钮的 ActionListener 中,您可以从 ActionEvent 获取按钮并从按钮获取面板:

JButton button = (JButton)e.getSource();
JPanel panel = (JPanel)button.getParent();

关于java - 如何让 JButton 知道它在哪个面板上被单击?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55941775/

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