Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
另一个类中的JAVA JButton在按下时拒绝激活_Java_Swing_Jframe_Awt_Jbutton - Fatal编程技术网

另一个类中的JAVA JButton在按下时拒绝激活

另一个类中的JAVA JButton在按下时拒绝激活,java,swing,jframe,awt,jbutton,Java,Swing,Jframe,Awt,Jbutton,我不明白为什么我的yankee和whiskyJButton坏了。现在我只希望他们在romeo大于1且sierra大于1时关闭程序 import java.awt.*; import java.lang.*; import javax.swing.*; import java.awt.BorderLayout; import java.awt.Container; import java.awt.event.ActionEvent; import java.awt.event.ActionList

我不明白为什么我的
yankee
whisky
JButton
坏了。现在我只希望他们在
romeo
大于1且
sierra
大于1时关闭程序

import java.awt.*;
import java.lang.*;
import javax.swing.*;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.InputEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.*;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.imageio.ImageIO;
import javax.swing.JPanel;
import java.util.Scanner;

public class AlphaMenu extends JFrame /*implements actionPerformed*/
{

    private GraphicsDevice gamma;
    public JButton charlie, zulu, yankee, xray;
    public JFrame beta;
    public JPanel delta, echo, foxtrot, golf, hotel;
    public JTextArea whiskey, victor;
    public BorderLayout uniform;
    public ImageIcon bg;
    public JLabel tango;
    public int sierra, romeo;
    public Integer quebec, papa;
    public ActionEvent oscar;
    public ActionEvent november;

    public AlphaMenu()
    {
        //Initialization of Objects
        charlie = new JButton("EXIT");
        zulu = new JButton("Enter Time");
        yankee = new JButton("Enter Amount of Money");
        xray = new JButton("Calculate");
        sierra = 0;
        romeo = 0;
        quebec = new Integer(0);
        papa = new Integer(0);
        whiskey = new JTextArea(2, 15);
        victor = new JTextArea(2, 15);
        bg = new ImageIcon("background.gif");
        beta = new JFrame();
        delta = new JPanel();
        echo = new JPanel();
        foxtrot = new JPanel();
        golf = new JPanel();
        hotel = new JPanel();
        uniform = new BorderLayout();
        ImageIcon bg = new ImageIcon("background.gif");
        tango = new JLabel("");

        tango.setIcon(bg);

        //Modification of panels
        beta.add(delta, uniform.PAGE_END);
        beta.add(golf, uniform.PAGE_START);
        beta.add(echo, uniform.LINE_START);
        beta.add(foxtrot, uniform.LINE_END);
        beta.add(hotel, uniform.CENTER);

        golf.add(tango);

        //Modification of JButton charlie & adding of JButtons
        charlie.setPreferredSize(new Dimension(100, 50));
        delta.add(charlie);
        charlie.addActionListener(new ActionListener()
        {
            public void actionPerformed(ActionEvent e)
            {
                System.exit(0);
            }
        });
        echo.add(whiskey);
        echo.add(yankee);
        foxtrot.add(victor);
        foxtrot.add(zulu);


        //Modification of JFrame beta
        beta.setUndecorated(true);
        beta.setExtendedState(JFrame.MAXIMIZED_BOTH);
        beta.setResizable(false);
        beta.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        beta.setVisible(true);
    }

    public void buttonSetup() throws NumberFormatException
    {
        //Modification of JButton yankee & JTextArea whiskey & int sierra
        romeo = quebec.parseInt(whiskey.getText());
        yankee.setPreferredSize(new Dimension(300, 50));
        yankee.addActionListener(new ActionListener()
        {
            public void actionPerformed(ActionEvent oscar)
            {
                System.exit(0);
            }
        });

        //Modification of JButton zulu & JTextArea victor & int romeo
        sierra = papa.parseInt(victor.getText());
        zulu.setPreferredSize(new Dimension(300, 50));
        zulu.addActionListener(new ActionListener()
        {
            public void actionPerformed(ActionEvent november)
            {
                System.exit(0);
            }
        });

    }

    public void actionPerformed(ActionEvent e)
    {
    }

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

因此,您有两个JTextArea(JTextField可能更好)和一个按钮。当两个文本区域的文本都是大于1的整数时,您希望一些按钮执行exit

您的
buttonSetup()
函数似乎没有在任何地方调用

无论如何,我会创建一个ActionListener,它读取文本、转换为整数、测试您的条件并执行exit()。应将此ActionListener添加到要执行操作的所有按钮中

final ActionListener al = new ActionListener() {
    public void actionPerformed(ActionEvent event) {
        try {
            final int intRomeo = Integer.parseInt(romeo.getText());
            final int intSierra = Integer.parseInt(sierra .getText());

            if (intRomeo > 1 && intSierra > 1) {
                // whatever you want to do
                System.exit(0); 
            }
        } catch (/*NumberFormat*/ Exception e) {
            // ...not integers
        }
    };
}
whiskey.addActionListener(al);
yankee.addActionListener(al);

我必须补充一点:您使用的变量名非常糟糕。考虑选择更有意义的东西。

初学者,可读性。如果你为变量使用了更合适的名称,缩进不同的代码段,并用注释来帮助描述外行术语,那么这可能有助于“邋遢”。也许“btnExit”和“btnCalculate”会让事情更容易导航

向前看,这里也没有两个不同的类,一个类有几个方法。这很好,但我想告诉你。我认为可能需要在操作侦听器和每个按钮的格式设置之后,将按钮添加到面板中。我自己刚开始接触一些swing方面的东西,我注意到在代码中移动.add()函数在遇到类似问题时会有所帮助。试试下面的咆哮。我对注释缩进并使用了新的命名约定,但代码使用了您的约定

//add the pnlEcho to frmBeta
beta.add(echo, uniform.LINE_START);

//format btnYankee
yankee.setPreferredSize(new Dimension(300, 50));

//btnYankee action listener
yankee.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent arg0) { //default action event
        System.exit(0); //you could use this
        beta.dispose(); //or you could dispose the frame and
                        //do more work after it is gone
    }
});

//add btnYankee to pnlEcho
echo.add(yankee);
我不明白为什么我的洋基和威士忌纽扣不是 工作


变量wiskey不是JButton类型,而是JTextArea类型

欢迎来到堆栈溢出。请缩进您的代码-只是让您的IDE格式化它应该做得很好。这将使我们(和你们)更容易理解它。我还怀疑您可以显著减少代码量,并且仍然可以演示问题-请参阅。旁注:即使是初学者也可以编写非草率的代码。实际上,这就是你的生活,我们的“工作”;而你的老师要容易得多。代码是写的。。。阅读;所以你最好从一天开始就把注意力集中在让阅读部分尽可能简单上。或者你认为学习工作的机械师可以把车库弄得一团糟吗?我还强烈建议你根据变量的用途来命名变量,而不仅仅是按照字母表来命名…现在很难理解你的代码,由于有大量的对象具有字母表名称,这些名称毫无意义,因为您必须不断引用代码的顶部,才能真正看到它的作用。试着缩短它,就像@JonSkeet说的那样,我相信你会找到一个有用的答案。一切都很好,做得很好:)威士忌不是JButton,正如你在问题中所说的,这是你的代码。建立yankee的方法从来没有被称为actionListener,因为方法“buttonSetup”从来没有被调用过。是的,我完全重写了代码,现在干净了15倍。像冠军一样工作。谢谢是的,我错了,哈哈。不管怎样,现在已经修好了。非常感谢你!我重写了代码,并以此作为指导。还使用了更精确的变量名。反应很好!