java - 让另一个类在 actionListener 中工作

标签 java swing user-interface awt actionlistener

想知道如何获得 stepProgram();在我的图形用户界面上工作,

非常感谢!

这是 GUI 类:

package maskin;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class mGUI extends JFrame implements ActionListener {

    private JButton knapp;
    private JTextField instruksjona, PCa, RAMa;
    private int l;
    public M  instruksjon, PC, RAM[], R;
    private M maskin;
     M mObject = new M();

    public static void main(String[] args) {
        mGUI vindu = new mGUI();
        vindu.setTitle("Maskin");
        vindu.setDefaultCloseOperation(EXIT_ON_CLOSE);
        vindu.opprettGUI();
        vindu.setSize(600, 600);
        vindu.pack();
        vindu.setVisible(true);
    }

    public void getValue(){

    }


    public void opprettGUI() {
        setLayout(new FlowLayout());
        JPanel knappePanel = new JPanel();
        JButton knapp = new JButton("Step PROGRAM");
        knappePanel.add(knapp);
        knapp.addActionListener(this);
        //knapp.addActionListener(this);
        //M reg = new R(R);
        instruksjona = new JTextField(10);
        add(instruksjona);
        PCa = new JTextField(10);
        add(PCa);
        RAMa = new JTextField(10);
        add(RAMa);

        add(knapp);



    }

    @Override
    public void  actionPerformed(ActionEvent e) {
         instruksjona.setText("3" );



    }
}

    /*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

这是包含stepProgram的代码:

    package maskin;

    import java.io.*;
    import java.util.*;
    import static javax.swing.JOptionPane.*;
    import static java.lang.Integer.*;

    public class M extends Object {

        private static final int IREAD = 10; // Flere ... 
        private final int RAM_SIZE = 256;
        private int[] RAM = new int[RAM_SIZE]; // Eller holder det med en byte-array? 
        private int R; // Register 
        private int PC = 0; // Programteller 
        private int instruksjon = RAM[PC];
        // Flere instansvariabler? 

        public M(int R, int PC, int instruksjon, int[] RAM) {
            this.RAM = RAM;
            this.PC = PC;
            this.R = R;
            this.instruksjon = instruksjon;


            /*
             * Initialisering av instansvariabler
             */
        }

    public M() {
        //throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

    public void setVerdi(int R, int PC, int instruksjon, int[] RAM) {
        this.R = R;
        this.PC = PC;
        this.instruksjon = instruksjon;
        this.RAM = RAM;


    }
    public int getR(){

        return R;
    }
        public int getPC(){

        return PC;
    }
            public int getInstruksjon(){

        return instruksjon;
    }
            public int[] getRAM(){

        return RAM;
    }

    public int lesInn() {
        String tallTxt = showInputDialog("Skriv inn helltall:");
        int tall = parseInt(tallTxt);
        return tall;



    }

    public void loadProgram(String fileName) {
        try {
            File test1 = new File(fileName);
            Scanner leser = new Scanner(test1);
            int i = 0;
            while (leser.hasNextLine()) {
                String linje = leser.nextLine();
                String[] splitter = linje.split(" ");

                RAM[i] = Integer.parseInt(splitter[0]);
                if (splitter.length > 1) {
                    RAM[i + 1] = Integer.parseInt(splitter[1]);
                }
                i += 2;
            }
            leser.close();
        } catch (IOException e1) {
            System.out.println("FEIL" + e1.toString());
        }


        //visMemory();

        /*
         * Nullstill instansvariabler Åpne fil Les inn program fra fil, linje
         * for linje Lukk fil
         */
    }

    public void visMemory() {
        for (int i = 0; i < RAM.length; i++) {
            System.out.println(RAM[i]);
        }
    }

    public void stepProgram() {
        int instruksjon = RAM[PC];
        int verdi = RAM[PC + 1];





        if (instruksjon == 10) {
            String tallTxt = showInputDialog("Skriv inn helltall:");
            int tall = parseInt(tallTxt);
            R = tall;
            PC += 2;
        } else if (instruksjon == 11) {
            showMessageDialog(null, "Helltall er: " + R);
            PC += 2;
        } else if (instruksjon == 12){
            String ta = showInputDialog(null, "Skriv inn tall"); 
            RAM[verdi] = Integer.parseInt(ta);
            PC +=2;


        } else if (instruksjon == 20) {
            R = RAM[verdi];
            PC += 2;
        } else if (instruksjon == 21) {
            RAM[verdi] = R;
            PC += 2;
        } else if (instruksjon == 22) {
            R = verdi;
            PC += 2;

        } else if (instruksjon == 30) {
            R += RAM[verdi];
            PC += 2;

        }else if(instruksjon == 31){
            R -= RAM[verdi];
            PC +=2;
        }else if(instruksjon == 32){
            R *= RAM[verdi];
            PC+=2;
        }else if (instruksjon == 33) {
            R /= RAM[verdi];
            PC+= RAM[verdi];
        } else if (instruksjon == 40) {
            PC = verdi;



        } else if (instruksjon == 42) {
            if (R == 0) {
                PC = verdi;

            } else {
                PC += 2;
            }



        } else if (instruksjon == 50) {
            System.exit(0);
        }

        System.out.println("Dette er instruksjon: " + instruksjon);
        System.out.println("Dette er register: " + R);
        System.out.println("Dette er programteller: " + PC);
        /*
         * Les neste instruksjon fra RAM Utfør instruksjonen (og oppdater
         * programtelleren)
         */

    }

public void executeProgram() {
        while (true) {
            stepProgram();
        }
        /*
         * Så lenge programmet ikke er avsluttet Utfør neste instruksjon
         * (stepProgram) Vis avsluttende melding
         */
    }

    public static void main(String[] args) {
        M maskin = new M();
        maskin.loadProgram("navn.txt");
        maskin.stepProgram();
        /*
         * Hent filnavn fra kommandolinje (args[0]) Lag et M-objekt Last program
         * fra fil (loadProgram) Utfør programmet (executeProgram)
         */
    }

    void setText(String antall_klikk__) {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }
}
/*
 * Eventuelle hjelpemetoder
 */

我想制作按钮 stepProgram 以将 System out println 上的所有数字放入 M 类。

最佳答案

在 mObject 上调用 stepProgram():

mObject.stepProgram();

关于java - 让另一个类在 actionListener 中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20318292/

相关文章:

java - spring-boot 应用程序启动后立即关闭(计划)

java - 观察列表中删除的对象

java - CardLayout - 如何使用 NetBeans GUI Builder 使用 previous() 和 next()?

java - JLabel ImageIcon 未正确平滑

java - 实际上如何使用 GraphStream 在 swing 中绘制图形?

javascript - 带有提交按钮的 JS 下拉菜单

java - 创建不同的 GUI 组件作为单独的类

java - Ajax 使用 Javascript 调用同一 JSP

java - 致命异常(java.lang.IllegalStateException)

java - 有没有办法翻转 JSlider,使 slider 箭头指向上方?