不同类中的JAVA JButton在按下时拒绝激活

时间:2016-04-13 13:05:52

标签: java swing jframe awt jbutton

我无法理解为什么我的yankeewhiskey 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();
    }
}

3 个答案:

答案 0 :(得分:0)

所以,你有两个JTextArea(JTextField可能会更好)和一个按钮。当两个textareas的文本都是大于1的整数时,你想要一些按钮来执行退出。

似乎没有在任何地方调用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);

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

答案 1 :(得分:0)

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

接下来,你在这里也没有两个不同的类,你有一个类有几个方法。这很好,但想通知你。我想也许你需要在动作监听器和每个按钮的格式化之后将按钮添加到它们的面板。我只是自己进入了一些摇摆的东西,我注意到当我遇到这样的问题时,在代码中移动.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);

答案 2 :(得分:0)

  

我无法理解为什么我的洋基和威士忌JButton不是   工作

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