java - 为什么同一类中的 getSelectedRow() 给出了正确的值,但在不同的类中它给出了 -1,即使选择了一行?
问题描述
为什么当我getSelectedRow()
在同一个类中调用时它返回正确的值,但是当我尝试从另一个类调用该方法时,即使选择了一行,它也会返回-1?
例如,我有这样的方法。
public int getSelectedRow(){
int row = drinksTable.getSelectedRow();
System.out.println(row);
return row;
}
我有一个 jframe 类A和一个B类,其中包含购买、删除、编辑等所有功能。我需要知道选择了哪一行才能购买、删除、编辑正确的记录。上面的代码在A类中。问题是,如果我尝试在B类中调用上述方法,则返回的行始终为 -1,这意味着没有选择任何行,即使它清楚地显示在表中突出显示并选择了一行。如果我尝试在同一个类中调用该方法,它会返回正确的值。这里有什么问题?
例如,这里的A类称为 VendingMachine。我在B类中有这样的方法。我使用该方法的部分位于声明发生的上半部分。由于我希望根据所选行更改值,因此selectedRow
内部getValueAt(selectedRow, 1)
是这样的。
public static void purchaseDrink(String editTerm, String oldAmount, String newAmount, String filepath){
VendingMachine vm = new VendingMachine();
int selectedRow = vm.getSelectedRow();
String tempFile = "temp.txt";
File oldFile = new File(filepath);
File newFile = new File(tempFile);
String drinkName = vm.model.getValueAt(selectedRow, 1).toString();
String price = vm.model.getValueAt(selectedRow, 2).toString();
String drinkQuantity = vm.model.getValueAt(selectedRow, 3).toString();
String line;
try {
FileWriter fw = new FileWriter(tempFile, true);
BufferedWriter bw = new BufferedWriter(fw);
PrintWriter pw = new PrintWriter(bw);
BufferedReader br = new BufferedReader(new FileReader("drinks.txt"));
while((line = br.readLine()) != null){
if (drinkName.equals(editTerm)) {
line = line.replace(oldAmount, newAmount);
pw.println(line);
} else {
pw.println(line);
System.out.println(selectedRow);
}
}
br.close();
pw.flush();
pw.close();
oldFile.delete();
File dump = new File(filepath);
newFile.renameTo(dump);
} catch (IOException e) {
JOptionPane.showMessageDialog(null, "Failed to edit", "Edit failed", JOptionPane.INFORMATION_MESSAGE);
}
}
编辑
A 类 = 自动售货机
B 类 = 饮料
所以我用谷歌搜索了一下,发现了如何将 A 类的对象传递给 B 类,并用下面的代码做到了。
private VendingMachine vm;
public Drinks(VendingMachine vm) {
this.vm = vm;
}
然后在按钮中调用该方法,如下所示:
VendingMachine vm = new VendingMachine();
Drinks drinks = new Drinks(vm);
drinks.purchaseDrink(...);
但是该selectedRow()
方法仍然返回 -1 而不是选择的行。我错过了什么??
解决方案
推荐阅读
- firebase - Firebase 身份验证:链接匿名帐户
- java - 内循环不打印单行矩阵Java intellij的列
- asp.net-core - 如何使用 IdentityServer4 中的 ResourceOwnerPassword GrantType 使旧令牌无效
- autofac - 解析 IEnumerable 时的 Autofac 独立范围
- javascript - 滚动到
- 单击溢出(javascript)
- python - Python,文件处理
- python - Python mock.patch 自动指定具有属性的类
- amazon-web-services - aws 集群中的核心
- php - 将实时 Magento 2.1 站点迁移到本地主机时出错:SQLSTATE[HY000] [1045] 用户 'root'@'localhost' 的访问被拒绝
- selenium - 在带有 Dameware 和 IE11 的 Windows 10 上运行的 Selenium 找不到任何元素