繁体   English   中英

Java jbutton在另一个类中

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM