gpt4 book ai didi

java - 如何从 JButton 检索数据?

转载 作者:行者123 更新时间:2023-11-30 10:04:45 24 4
gpt4 key购买 nike

我希望从循环中创建 JButton 控件,然后使用事件处理程序提取相关信息并使用 SQL 命令进一步操作。

但是我无法访问创建的按钮对象的组件名称或组件文本字段。

try {
String SQL = "SELECT * FROM Products";
ResultSet rs = GetDB.AccessDatabse(SQL);

while(rs.next()){
JButton btn = new JButton();
btn.setText(rs.getString("ProductName"));
btn.setName(rs.getString("ProductName"));
System.out.println(btn.getName());
btn.addActionListener(this);
add(btn);
}
}
catch (SQLException ex) {System.out.println("GUI Creation Error");}
}

@Override
public void actionPerformed(ActionEvent ae){
System.out.println(this.getName());
}

我希望将按钮名称设置为 SQL 查询结果,但是当尝试打印结果时,它会为每个按钮显示 "frame0"

每个按钮的文本区域都正常工作

最佳答案

您在 this 上调用 getName(),这不是按钮,而是您的 this-context,也就是您的 JFrame

您需要解析ActionEvent 的来源。

这里我做了一些可以做你想做的快速代码:

actionPerformed(ActionEvent e) { 
if(e.getSource() instanceof JButton) {
//Casting here is safe after the if condition
JButton b = (JButton) e.getSource();
System.out.println(b.getText());
} else {
System.out.println("Something other than a JButton was clicked");
}
}

我所做的:我检查操作源是否是一个 JButton,然后将它转换为一个新的局部变量,然后获取它的文本。

关于java - 如何从 JButton 检索数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55744362/

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