java - 操作命令在我的程序中不起作用

标签 java actionevent

名为Project2的类文件

public class Project2 extends JPanel implements ActionListener 
{
    private JToggleButton ISLM1103 = new JToggleButton("ISLM1103");
    private JToggleButton GENG215 = new JToggleButton("GENG215");
    private JToggleButton ESPU107 = new JToggleButton("ESPU107");
    private JToggleButton ESPU1452 = new JToggleButton("ESPU1452");
    private JToggleButton HSS110 = new JToggleButton("HSS110");
    private JToggleButton Calculate = new JToggleButton("Calculate");
    private JToggleButton Exit = new JToggleButton("Exit");

    public Project2() 
    {

        //Adding the action even to the buttons
        ISLM1103.addActionListener(this);
        GENG215.addActionListener(this);
        ESPU107.addActionListener(this);
        ESPU1452.addActionListener(this);
        HSS110.addActionListener(this);

        Calculate.addActionListener(this);
        Exit.addActionListener(this);

        //Set the Layout
        setLayout(new GridLayout(12,12));
        //Adding the buttons
        add(ISLM1103);
        add(GENG215);
        add(ESPU107);
        add(ESPU1452);
        add(HSS110);
        add(Calculate);
        add(Exit);
    }

    public static void main(String[] args) 
    {
        new Project2();
    }

    public void actionPerformed(ActionEvent actionlistner) 
    {   
        // initializing the arraylist

        ArrayList<String> courseList = new ArrayList<String>();

        if (actionlistner.getActionCommand().equals("ISLM1103"))
            courseList.add("ISLM1103");
        if (actionlistner.getActionCommand().equals("GENG215"))
            courseList.add("GENG215");
        if (actionlistner.getActionCommand().equals("ESPU107"))
            courseList.add("ESPU107");
        if (actionlistner.getActionCommand().equals("ESPU1452"))
            courseList.add("ESPU1452");
        if (actionlistner.getActionCommand().equals("HSS110"))
            courseList.add("HSS110");

        if (actionlistner.getActionCommand() == "Calculate")
        {
             try
             {
                FileWriter writer = new FileWriter("Course.txt");
                BufferedWriter course = new BufferedWriter(writer);
                PrintWriter out = new PrintWriter(course);
                for(int i = 0; i < courseList.size(); i++)
                {
                    if(courseList.get(i) != null)   
                    out.println(courseList.get(i));    
                }
                out.close();
            }

            catch(IOException e)
            {
                System.out.println(e);   
            }

        }

        if (actionlistner.getActionCommand() == ("Exit"))
            System.exit(0);
    }
}

这个叫做项目一,它是我的构造函数,非常好

public class Project1 extends JFrame 
{
    private Project2 topleft;           //  Buttons
    private Project3 topright;          //  UAEU - Picture
    private Project4 bottomleft;        //  Schedule
    private Project5 bottomright;       //  Help - Pad

    // Constructor

    public Project1() throws IOException
    {
        // Display a title.
        setTitle(" UAE University Interactive Course Calculator");

        // Specify an action for the close button.
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        // Create a GridLayout manager.
        setLayout(new GridLayout(2, 2));

        // Create the custom panels.
        topleft = new Project2();
        topright = new Project3();
        bottomleft = new Project4();
        bottomright = new Project5();


        // Create the button panel.
        add(topleft);
        add(topright);
        add(bottomleft);
        add(bottomright);

        // setting formatting options
        pack();
        setResizable(true);
        setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
        setVisible(true);
    }

    // Main method
    public static void main(String[] args) throws IOException
    {
        new Project1();
    }   
}

只需关注项目 2,当出现 If 函数时,看看我是否删除了数组打印出的操作监听器,因此这不是数组问题。现在,程序不会添加我告诉它在按下按钮时添加的值。有人可以帮忙吗?

编辑! = 无论我写什么,程序都可以工作。因为计算和退出按钮起作用。这并不是说。因此,在您做出假设之前,我建议您先尝试一下该程序,然后再根据自己的想法进行假设

最佳答案

ToggleButton#ToggleButton(String)设置要显示的 text 而不是您似乎期望的 actionCommand。所以这条线

private JToggleButton ISLM1103 = new JToggleButton("ISLM1103");

相当于:

private JToggleButton ISLM1103;

{
    ISLM1103 = new JToggleButton();
    ISLM1103.setText("ISLM1103"); // <--
}

关于java - 操作命令在我的程序中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34333939/

相关文章:

java - 如何在 Ubuntu 16.04 上安装 Groovy 3.0?

java - 如何更新 actionListener 内的 JTextArea 文本?

java - 如何正确格式化 ActionEvent 以便 JButton 正常工作

java - 将 Java 中的 TextField 中的值插入数据库

java - 使用外部 java 类作为 AVRO 模式中的类型

java - Java中的XML文件读取

java - 在java中是否有一个实用程序可以在没有检查异常的情况下解析URL?

java - 如何在weka中实现成本敏感分类器?

java - Java中限制CheckBox的选择

java - 如何从 JPanel 触发 ActionEvent