[英]Java jbutton in another class
我试图在一个类中创建一个按钮,以从表中删除某些内容。 当它不在单独的课程中时,我可以使用它。 但是,当我尝试将代码移到新类并在我的main方法中创建该类的对象时,该按钮不起作用。 我对使用Swing很陌生,因此任何帮助将不胜感激。
public abstract class RemoveButton extends frame implements ActionListener {
public void actionPerformed(ActionEvent arg0) {
DefaultTableModel model = (DefaultTableModel) table.getModel();
if (table.getSelectedRow() == -1) {
if (table.getRowCount() == 0) {
Mess.setText("Table is empty");
} else {
Mess.setText("You need to select");
}
} else {
model.removeRow(table.getSelectedRow());
}
}
}
}
此类是应该删除访客的按钮。 我扩展了框架,因为那是我大多数变量所在的位置。 从这里开始,我不确定如何将此方法调用到我的main方法上并使其正常工作。 所有导入均已添加。
我要在这里猜测,由于当前编写的问题尚不完整,我们不得不这样做,但是我怀疑您滥用了继承。 我猜想您的主GUI是由frame类持有的(应重新命名以符合Java标准,以便其首字母大写),并正在这样做,以便此类可以调用方法和访问字段框架类。 如果是这样,那么您将继承用于错误的目的,因为RemoveButton持有的“框架”实例是唯一的,并且与显示的框架实例完全不同。
相反,您应该向此类传递对实际显示的框架对象的引用,然后根据需要在该对象上调用方法。
例如,
// why abstract? I've removed that
// no longer extends frame
public class RemoveButton implements ActionListener {
// I've renamed your frame class to "MyFrame"
private MyFrame myFrame;
// constructor that allows you to pass in MyFrame reference
public RemoveButton(MyFrame myFrame) {
this.myFrame = myFrame; // assign to field
}
public void actionPerformed(ActionEvent evt) {
JTable table = myFrame.getTable(); // give MyFrame this method
DefaultTableModel model = (DefaultTableModel) table.getModel();
// .... etc
}
}
较干净的方法是使用MVC设计模式,但这需要做更多的前期工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.