【问题标题】:Access and Run main class method from another class从另一个类访问并运行主类方法
【发布时间】:2016-11-27 05:45:17
【问题描述】:

我在寻找在我的主类中执行打印方法的方法时遇到了问题,该方法来自另一个具有JButton 的类。

这是我要执行的Mainclass 方法。

public void genInReceipt(Date in, String res) 
        throws Exception
    {
        log.debug("start printing...");

//      TOP
        serialPort.writeString(new String(new byte[] {ESC, 'J', 0x4A}));
        serialPort.writeString(new String(new byte[] {ESC, 'J', 0x4A}));
        serialPort.writeString(new String(new byte[] {ESC, 'J', 0x4A}));
        serialPort.writeString(new String(new byte[] {ESC, 'J', 0x4A}));
        serialPort.writeString(new String(new byte[] {ESC, '@', 0x1b, 0x61, 0x01}));
        serialPort.writeString(new String(new byte[] {ESC, '!', 0x08}));
        serialPort.writeString(new String(new byte[] {ESC, 'E', 0x1b}));
        serialPort.writeString(String.format("%s\n", "PLAZA INDONESIA"));
        serialPort.writeString(new String(new byte[] {ESC, 'J', 0x4A}));
        serialPort.writeString(new String(new byte[] {ESC, 'J', 0x4A}));

//      PARAGRAPH 1 Still Fix(Add Parimeter)
        serialPort.writeString(new String(new byte[] {ESC, '!', 0x08, ESC, 'a', 0x00}) + String.format("%s\n","    1343KZT/MOBIL"));// +  new String(new byte[] {ESC, 'E', 0x1B, GS, '!', 0x10, 0x01}) + String.format("        MOBIL"));
        serialPort.writeString(String.format("%s\n", "    PP6-ADE SILFIANAH"));
        serialPort.writeString(String.format("    In      : %s\n", df.format(in)));
        serialPort.writeString(String.format("    Out     : %s\n", "21 Jul 2016  17:00:00"));
        serialPort.writeString(String.format("    Duration: %s\n", "1 hours 29 minutes")); //Pakegate
        serialPort.writeString(new String(new byte[] {ESC, 'J', 0x4A}));
        serialPort.writeString(String.format("    Sewa Parkir: %s\n", "Rp     6.000"));
        serialPort.writeString(new String(new byte[] {ESC, 'J', 0x4A}));

//      BOTTOMLINE
        serialPort.writeString(new String(new byte[] {ESC, 'a', 0x01}));
        serialPort.writeString(new String("TERIMA KASIH\n".getBytes()));
        serialPort.writeString(new String("ATAS KUNJUNGAN ANDA\n".getBytes())); 
        log.debug("              ... done");        
        serialPort.writeString(new String(new byte[] {GS, 'v', 0x1D}));
        serialPort.writeString(new String(new byte[] {0x1b, 0x64, 0x05}));
        serialPort.writeString(new String(new byte[] {0x1d, 0x56, 0x42, 0x00}));
    }

这是我的 GUI 代码

package unibit.embedded.parking;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JOptionPane;



public class GUIPrinter {

    public static void main(String[] args) {

        final JFrame frame = new JFrame();
        JPanel panel = new JPanel();

        JButton button1 = new JButton();

        frame.add(panel);
        panel.add(button1);
        frame.setVisible(true);

        button1.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent arg0) {
                //What i have to add here to execute genInReciept method?
            }
        });

    }

}

我知道我的代码有问题,有人可以帮助我吗?

【问题讨论】:

标签: java user-interface methods mainclass


【解决方案1】:

您需要使用genInReceipt 创建类的实例,然后这样调用它:

  ClassWithGenInReceiptMethod o = new ClassWithGenInReceiptMethod();
  o.genInReceipt();

但首先要开始阅读有关 Java 和编程本身的基础知识。

【讨论】:

  • 我已经创建了 genInReciept 的实例并调用它。但我的 genInReciept 包含(日期和字符串资源)它不起作用,有什么解决方案吗?谢谢
  • code public class GUIPrinter { ParkingSimulator o = new ParkingSimulator(); public static void main(String[] args) { final JFrame frame = new JFrame(); JPanel 面板 = 新 JPanel(); JButton button1 = new JButton();框架。添加(面板); panel.add(button1); frame.setVisible(true); button1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { o.genInReceipt(in, res); } }); } @潜水员
【解决方案2】:

你需要/想要的很简单,你需要一个类的实例并调用方法......

示例:

public void actionPerformed(ActionEvent arg0) {
    //What i have to add here to execute genInReciept method?
    Mainclass mc = ...//get a MainClass or create a new instance like doing new Mainclass();...
    mc.genInReceipt(new Date() ,"???"); //I dont know what res is, since I can not find it in the method
    
}

【讨论】:

    【解决方案3】:

    假设您的 GUIprinter 主类与您的 genInReceipt() 类在同一个文件中。我就是这样做的。

    public class GUIPrinter extends JFrame{
    
    public static void main(String[] args) {
        final JFrame frame = new JFrame();
        JPanel panel = new JPanel();
    
        JButton button1 = new JButton();
    
        final Date date = new Date();// declare Date variable
        final String yourString = "Your String here";// declare String variable
    
        frame.add(panel);
        panel.add(button1);
        frame.setVisible(true);
    
        button1.addActionListener(new ActionListener() {
    
            public void actionPerformed(ActionEvent arg0) {
                    try {
                        genInReceipt(date,yourString);
                    } catch (Exception e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
            }
        });
    
    }
    
    public static void genInReceipt(Date in, String res){
        // your code
    }
    }
    

    注意:您的 genInReceipt() 类要求您传递 DateString 变量。声明这些变量并将其传递给genInReceipt() 类。

    但是如果你的getInReceipt() 类在另一个文件上。按照前面给出的答案。所以总结一下前面的答案是怎么做的。

    1. 声明genInReceipt()所在类的实例。
    2. 致电genInReceipt()

      public class ClassThatWouldCallgenInReceipt extends JFrame {
      
      ClassWithgenInReceipt o = new ClassWithGenInReceipt();// Here is the class where genInReceipt() is located
      public static void main(String[] args) {
      final JFrame frame = new JFrame();
      JPanel panel = new JPanel();
      
      JButton button1 = new JButton();
      
      final Date date = new Date();// declare Date variable
      final String yourString = "Your String here";// declare String variable
      
      frame.add(panel);
      panel.add(button1);
      frame.setVisible(true);
      
      button1.addActionListener(new ActionListener() {
      
          public void actionPerformed(ActionEvent arg0) {
              o.genInReceipt(date, yourString);// Call genInReceipt() like this
          }
      });
      
      }
      }
      

    这里是ClassWithgenInReceipt genInReceipt() 类所在的位置

        public class ClassWithgenInReceipt{
        public void genInReceipt(Date date, String yourString){
            //your code
        }
        }
    

    注意:我对 java 也很陌生。所以我可能会用一些错误来回答这个问题。但是如果有错误,请告诉我以供学习:)。

    【讨论】:

      猜你喜欢
      • 2022-12-05
      • 1970-01-01
      • 2016-01-15
      • 2015-01-21
      • 2017-05-12
      • 2014-07-06
      • 2017-01-03
      • 2012-03-19
      • 2014-10-10
      相关资源
      最近更新 更多