Java GUI按钮不会初始化

时间:2017-06-12 17:24:56

标签: java

所以我创建了一个类似于某个销售项目的计算器的程序。我有一个计算按钮,但按下按钮不会初始化其中的代码。我正在使用Swing设计师为gui。这是带按钮

的代码
JButton btnNewButton = new JButton("Calculate Total");
    btnNewButton.setFont(new Font("Tahoma", Font.PLAIN, 43));
    btnNewButton.setBounds(37, 1113, 330, 77);
    frame.getContentPane().add(btnNewButton);

    if(btnNewButton.getModel().isPressed())
    {

        // Sets value for # of gloves per type
        LA = Integer.parseInt(textField_1.getText());
        LB = Integer.parseInt(textField_8.getText());
        SA = Integer.parseInt(textField_12.getText());
        SB = Integer.parseInt(textField_13.getText());
        total = LA + LB + SA + SB;

        // Sets value for percentage of gloves compared to total 
        percLA = LA / total;
        percLB = LB / total;
        percSA = SA / total;
        percSB = SB / total;
        double percTotal = percLA + percLB + percSA + percSB;

        //21;
        // Sets value for total # of gloves
        textField_22.setText(Double.toString(total));

        // Sets value for percentage 
        textField_2.setText(Double.toString(percLA));
        textField_7.setText(Double.toString(percLB));
        textField_14.setText(Double.toString(percSA));
        textField_15.setText(Double.toString(percSB));
        textField_21.setText(Double.toString(percTotal));

        // Sets value for cost per pair
        costLA = Integer.parseInt(textField_3.getText());
        costLB = Integer.parseInt(textField_6.getText());
        costSA = Integer.parseInt(textField_16.getText());
        costSB = Integer.parseInt(textField_17.getText());  
    } 

如果需要,这里有完整的代码

import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.Box;
import javax.swing.JTextField;
import java.awt.BorderLayout;
import java.awt.Font;
import javax.swing.JLabel;
import javax.swing.JSlider;
import javax.swing.JTextArea;
import javax.swing.JButton;

public class Program {

private JFrame frame;
private JTextField textField_1;
private JTextField textField_2;
private JTextField textField_3;
private JTextField textField_4;
private JTextField textField_5;
private JTextField textField_6;
private JTextField textField_7;
private JTextField textField_8;
private JTextField textField_12;
private JTextField textField_13;
private JTextField textField_14;
private JTextField textField_15;
private JTextField textField_16;
private JTextField textField_17;
private JTextField textField_18;
private JTextField textField_19;
private JTextField textField_20;
private JTextField textField_21;
private JTextField textField_22;

/**
 * Launch the application.
 */
public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
        public void run() {
            try {
                Program window = new Program();
                window.frame.setVisible(true);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });
}

/**
 * Create the application.
 */
public Program() {
    initialize();
}

/**
 * Initialize the contents of the frame.
 */
private void initialize() {
    frame = new JFrame();
    frame.setBounds(100, 100, 1109, 1400);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.getContentPane().setLayout(null);

    // Total # of pairs per glove
    double LA = 0;
    double LB = 0;
    double SA = 0;
    double SB = 0;
    double total = 0;

    // Percentage of gloves compared to total
    double percLA = 0;
    double percLB = 0;
    double percSA = 0;
    double percSB = 0;

    // Cost per glove type
    double costLA = 0;
    double costLB = 0;
    double costSA = 0;
    double costSB = 0;


    textField_1 = new JTextField();
    textField_1.setFont(new Font("Tahoma", Font.PLAIN, 40));
    textField_1.setColumns(10);
    textField_1.setBounds(231, 74, 200, 64);
    frame.getContentPane().add(textField_1);


    textField_2 = new JTextField();
    textField_2.setEditable(false);
    textField_2.setFont(new Font("Tahoma", Font.PLAIN, 40));
    textField_2.setColumns(10);
    textField_2.setBounds(440, 74, 200, 64);
    frame.getContentPane().add(textField_2);


    textField_3 = new JTextField();
    textField_3.setFont(new Font("Tahoma", Font.PLAIN, 40));
    textField_3.setColumns(10);
    textField_3.setBounds(650, 74, 200, 64);
    frame.getContentPane().add(textField_3);

    textField_4 = new JTextField();
    textField_4.setEditable(false);
    textField_4.setFont(new Font("Tahoma", Font.PLAIN, 40));
    textField_4.setColumns(10);
    textField_4.setBounds(860, 74, 200, 64);
    frame.getContentPane().add(textField_4);

    textField_5 = new JTextField();
    textField_5.setEditable(false);
    textField_5.setFont(new Font("Tahoma", Font.PLAIN, 40));
    textField_5.setColumns(10);
    textField_5.setBounds(860, 147, 200, 64);
    frame.getContentPane().add(textField_5);

    textField_6 = new JTextField();
    textField_6.setFont(new Font("Tahoma", Font.PLAIN, 40));
    textField_6.setColumns(10);
    textField_6.setBounds(650, 147, 200, 64);
    frame.getContentPane().add(textField_6);

    textField_7 = new JTextField();
    textField_7.setEditable(false);
    textField_7.setFont(new Font("Tahoma", Font.PLAIN, 40));
    textField_7.setColumns(10);
    textField_7.setBounds(440, 147, 200, 64);
    frame.getContentPane().add(textField_7);

    textField_8 = new JTextField();
    textField_8.setFont(new Font("Tahoma", Font.PLAIN, 40));
    textField_8.setColumns(10);
    textField_8.setBounds(231, 147, 200, 64);
    frame.getContentPane().add(textField_8);

    textField_12 = new JTextField();
    textField_12.setFont(new Font("Tahoma", Font.PLAIN, 40));
    textField_12.setColumns(10);
    textField_12.setBounds(231, 219, 200, 64);
    frame.getContentPane().add(textField_12);

    textField_13 = new JTextField();
    textField_13.setFont(new Font("Tahoma", Font.PLAIN, 40));
    textField_13.setColumns(10);
    textField_13.setBounds(231, 293, 200, 64);
    frame.getContentPane().add(textField_13);

    textField_14 = new JTextField();
    textField_14.setEditable(false);
    textField_14.setFont(new Font("Tahoma", Font.PLAIN, 40));
    textField_14.setColumns(10);
    textField_14.setBounds(440, 219, 200, 64);
    frame.getContentPane().add(textField_14);

    textField_15 = new JTextField();
    textField_15.setEditable(false);
    textField_15.setFont(new Font("Tahoma", Font.PLAIN, 40));
    textField_15.setColumns(10);
    textField_15.setBounds(440, 293, 200, 64);
    frame.getContentPane().add(textField_15);

    textField_16 = new JTextField();
    textField_16.setFont(new Font("Tahoma", Font.PLAIN, 40));
    textField_16.setColumns(10);
    textField_16.setBounds(650, 219, 200, 64);
    frame.getContentPane().add(textField_16);

    textField_17 = new JTextField();
    textField_17.setFont(new Font("Tahoma", Font.PLAIN, 40));
    textField_17.setColumns(10);
    textField_17.setBounds(650, 293, 200, 64);
    frame.getContentPane().add(textField_17);

    textField_18 = new JTextField();
    textField_18.setEditable(false);
    textField_18.setFont(new Font("Tahoma", Font.PLAIN, 40));
    textField_18.setColumns(10);
    textField_18.setBounds(860, 219, 200, 64);
    frame.getContentPane().add(textField_18);


    textField_19 = new JTextField();
    textField_19.setEditable(false);
    textField_19.setFont(new Font("Tahoma", Font.PLAIN, 40));
    textField_19.setColumns(10);
    textField_19.setBounds(860, 293, 200, 64);
    frame.getContentPane().add(textField_19);

    textField_20 = new JTextField();
    textField_20.setEditable(false);
    textField_20.setFont(new Font("Tahoma", Font.PLAIN, 40));
    textField_20.setColumns(10);
    textField_20.setBounds(860, 386, 200, 64);
    frame.getContentPane().add(textField_20);

    textField_21 = new JTextField();
    textField_21.setEditable(false);
    textField_21.setFont(new Font("Tahoma", Font.PLAIN, 40));
    textField_21.setColumns(10);
    textField_21.setBounds(440, 386, 200, 64);
    frame.getContentPane().add(textField_21);

    textField_22 = new JTextField();
    textField_22.setEditable(false);
    textField_22.setFont(new Font("Tahoma", Font.PLAIN, 40));
    textField_22.setColumns(10);
    textField_22.setBounds(231, 386, 200, 64);
    frame.getContentPane().add(textField_22);

    Box horizontalBox = Box.createHorizontalBox();
    horizontalBox.setBounds(213, 74, -187, 64);
    frame.getContentPane().add(horizontalBox);

    Box horizontalBox_1 = Box.createHorizontalBox();
    horizontalBox_1.setBounds(22, 74, 200, 64);
    frame.getContentPane().add(horizontalBox_1);

    JLabel lblTest = new JLabel("Latex A");
    lblTest.setFont(new Font("Tahoma", Font.PLAIN, 35));
    horizontalBox_1.add(lblTest);

    Box horizontalBox_2 = Box.createHorizontalBox();
    horizontalBox_2.setBounds(22, 147, 200, 64);
    frame.getContentPane().add(horizontalBox_2);

    JLabel lblLatexB = new JLabel("Latex B");
    lblLatexB.setFont(new Font("Tahoma", Font.PLAIN, 35));
    horizontalBox_2.add(lblLatexB);

    Box horizontalBox_3 = Box.createHorizontalBox();
    horizontalBox_3.setBounds(22, 219, 200, 64);
    frame.getContentPane().add(horizontalBox_3);

    JLabel lblSyntheticA = new JLabel("Synthetic A");
    lblSyntheticA.setFont(new Font("Tahoma", Font.PLAIN, 35));
    horizontalBox_3.add(lblSyntheticA);

    Box horizontalBox_4 = Box.createHorizontalBox();
    horizontalBox_4.setBounds(22, 293, 200, 64);
    frame.getContentPane().add(horizontalBox_4);

    JLabel lblSyntheticB = new JLabel("Synthetic B");
    lblSyntheticB.setFont(new Font("Tahoma", Font.PLAIN, 35));
    horizontalBox_4.add(lblSyntheticB);

    Box horizontalBox_5 = Box.createHorizontalBox();
    horizontalBox_5.setBounds(231, 0, 200, 64);
    frame.getContentPane().add(horizontalBox_5);

    JLabel lblPairsYear = new JLabel("Pairs / Year");
    lblPairsYear.setFont(new Font("Tahoma", Font.PLAIN, 35));
    horizontalBox_5.add(lblPairsYear);

    Box horizontalBox_6 = Box.createHorizontalBox();
    horizontalBox_6.setBounds(440, 0, 200, 64);
    frame.getContentPane().add(horizontalBox_6);

    JLabel lblOfTotal = new JLabel("% Of Total");
    lblOfTotal.setFont(new Font("Tahoma", Font.PLAIN, 35));
    horizontalBox_6.add(lblOfTotal);

    Box horizontalBox_7 = Box.createHorizontalBox();
    horizontalBox_7.setBounds(650, 0, 200, 64);
    frame.getContentPane().add(horizontalBox_7);

    JLabel lblPricePerPair = new JLabel("Price Per Pair");
    lblPricePerPair.setFont(new Font("Tahoma", Font.PLAIN, 33));
    horizontalBox_7.add(lblPricePerPair);

    Box horizontalBox_8 = Box.createHorizontalBox();
    horizontalBox_8.setBounds(860, 0, 200, 64);
    frame.getContentPane().add(horizontalBox_8);

    JLabel lblTotalSpent = new JLabel("Total Spent");
    lblTotalSpent.setFont(new Font("Tahoma", Font.PLAIN, 35));
    horizontalBox_8.add(lblTotalSpent);

    JSlider slider = new JSlider();
    slider.setToolTipText("h");
    slider.setPaintTicks(true);
    slider.setPaintLabels(true);
    slider.setFont(new Font("Tahoma", Font.PLAIN, 72));
    slider.setBounds(39, 592, 1021, 88);
    frame.getContentPane().add(slider);

    JLabel lblAverageSalePrice = new JLabel("Average Sale Price");
    lblAverageSalePrice.setFont(new Font("Tahoma", Font.PLAIN, 35));
    lblAverageSalePrice.setBounds(39, 536, 384, 43);
    frame.getContentPane().add(lblAverageSalePrice);

    JTextArea textArea = new JTextArea();
    textArea.setFont(new Font("Monospaced", Font.PLAIN, 43));
    textArea.setBounds(468, 525, 172, 61);
    frame.getContentPane().add(textArea);

    JTextArea textArea_1 = new JTextArea();
    textArea_1.setFont(new Font("Monospaced", Font.PLAIN, 43));
    textArea_1.setBounds(468, 714, 172, 61);
    frame.getContentPane().add(textArea_1);

    JLabel lblTotalNumberOf = new JLabel("Total Number Of Pairs");
    lblTotalNumberOf.setFont(new Font("Tahoma", Font.PLAIN, 35));
    lblTotalNumberOf.setBounds(39, 725, 384, 43);
    frame.getContentPane().add(lblTotalNumberOf);

    JSlider slider_1 = new JSlider();
    slider_1.setToolTipText("h");
    slider_1.setPaintTicks(true);
    slider_1.setPaintLabels(true);
    slider_1.setFont(new Font("Tahoma", Font.PLAIN, 72));
    slider_1.setBounds(39, 783, 1021, 88);
    frame.getContentPane().add(slider_1);

    JTextArea textArea_2 = new JTextArea();
    textArea_2.setFont(new Font("Monospaced", Font.PLAIN, 43));
    textArea_2.setBounds(468, 895, 172, 61);
    frame.getContentPane().add(textArea_2);

    JLabel lblPriceReduction = new JLabel("Price Reduction");
    lblPriceReduction.setFont(new Font("Tahoma", Font.PLAIN, 35));
    lblPriceReduction.setBounds(39, 917, 384, 43);
    frame.getContentPane().add(lblPriceReduction);

    JSlider slider_2 = new JSlider();
    slider_2.setToolTipText("h");
    slider_2.setPaintTicks(true);
    slider_2.setPaintLabels(true);
    slider_2.setFont(new Font("Tahoma", Font.PLAIN, 72));
    slider_2.setBounds(39, 968, 1021, 88);
    frame.getContentPane().add(slider_2);

    JTextArea textArea_3 = new JTextArea();
    textArea_3.setEditable(false);
    textArea_3.setFont(new Font("Monospaced", Font.PLAIN, 43));
    textArea_3.setBounds(417, 1129, 292, 61);
    frame.getContentPane().add(textArea_3);

    JButton btnNewButton = new JButton("Calculate Total");
    btnNewButton.setFont(new Font("Tahoma", Font.PLAIN, 43));
    btnNewButton.setBounds(37, 1113, 330, 77);
    frame.getContentPane().add(btnNewButton);

    if(btnNewButton.getModel().isPressed())
    {

        // Sets value for # of gloves per type
        LA = Integer.parseInt(textField_1.getText());
        LB = Integer.parseInt(textField_8.getText());
        SA = Integer.parseInt(textField_12.getText());
        SB = Integer.parseInt(textField_13.getText());
        total = LA + LB + SA + SB;

        // Sets value for percentage of gloves compared to total 
        percLA = LA / total;
        percLB = LB / total;
        percSA = SA / total;
        percSB = SB / total;
        double percTotal = percLA + percLB + percSA + percSB;

        //21;
        // Sets value for total # of gloves
        textField_22.setText(Double.toString(total));

        // Sets value for percentage 
        textField_2.setText(Double.toString(percLA));
        textField_7.setText(Double.toString(percLB));
        textField_14.setText(Double.toString(percSA));
        textField_15.setText(Double.toString(percSB));
        textField_21.setText(Double.toString(percTotal));

        // Sets value for cost per pair
        costLA = Integer.parseInt(textField_3.getText());
        costLB = Integer.parseInt(textField_6.getText());
        costSA = Integer.parseInt(textField_16.getText());
        costSB = Integer.parseInt(textField_17.getText());






    }
}

}

更新:为监听器创建了一个匿名类,但我的代码不会初始化我为我的按钮执行代码的位置。这是代码

    JTextArea textArea_2 = new JTextArea();
    textArea_2.setFont(new Font("Monospaced", Font.PLAIN, 43));
    textArea_2.setBounds(468, 895, 172, 61);
    frame.getContentPane().add(textArea_2);

    JLabel lblPriceReduction = new JLabel("Price Reduction");
    lblPriceReduction.setFont(new Font("Tahoma", Font.PLAIN, 35));
    lblPriceReduction.setBounds(39, 917, 384, 43);
    frame.getContentPane().add(lblPriceReduction);

    JSlider slider_2 = new JSlider();
    slider_2.setToolTipText("h");
    slider_2.setPaintTicks(true);
    slider_2.setPaintLabels(true);
    slider_2.setFont(new Font("Tahoma", Font.PLAIN, 72));
    slider_2.setBounds(39, 968, 1021, 88);
    frame.getContentPane().add(slider_2);

    JTextArea textArea_3 = new JTextArea();
    textArea_3.setEditable(false);
    textArea_3.setFont(new Font("Monospaced", Font.PLAIN, 43));
    textArea_3.setBounds(417, 1129, 292, 61);
    frame.getContentPane().add(textArea_3);


    JButton btnNewButton = new JButton("Calculate Total");
    btnNewButton.setFont(new Font("Tahoma", Font.PLAIN, 43));
    btnNewButton.setBounds(37, 1113, 330, 77);
    frame.getContentPane().add(btnNewButton);
    btnNewButton.addActionListener(new Action());

}

    static class Action implements ActionListener {

        public void actionPerformed (ActionEvent e){
            textArea_1.setText("This is a test"); 
        }
    }


}

然而,我输入的地方//试图在此处放置代码,我无法调用例如textfield_3.setText();.什么都不会初始化。

2 个答案:

答案 0 :(得分:0)

您必须向JButton添加actionListener并实现该接口的actionPerformed方法。请查看http://docs.oracle.com/javase/tutorial/uiswing/components/button.html,您将获得一些提示。您的代码没有附加到按钮上。

答案 1 :(得分:0)

我不确定真正的问题是什么,但我会建议你在你的类中实现ActionListener,这样你就不得不覆盖string input = Console.ReadLine(); while (true) { switch (input) { case "6/12/2017": case "06/12/2017": Console.WriteLine("Fajr - 3:32 AM"); Console.WriteLine("Sunrise - 5:14 AM"); Console.WriteLine("Dhuhr - 12:51 PM"); Console.WriteLine("Asr - 4:53 PM"); Console.WriteLine("Maghrib - 8:27 PM"); Console.WriteLine("Isha - 10:10 PM"); Console.WriteLine(); break; case "6/13/2017": case "06/13/2017": Console.WriteLine("Fajr - 3:32 AM"); Console.WriteLine("Sunrise - 5:14 AM"); Console.WriteLine("Dhuhr - 12:51 PM"); Console.WriteLine("Asr - 4:54 PM"); Console.WriteLine("Maghrib - 8:27 PM"); Console.WriteLine("Isha - 10:10 PM"); Console.WriteLine(); break; case "6/14/2017": case "06/14/2017": Console.WriteLine("Fajr - 3:32 AM"); Console.WriteLine("Sunrise - 5:14 AM"); Console.WriteLine("Dhuhr - 12:51 PM"); Console.WriteLine("Asr - 4:54 PM"); Console.WriteLine("Maghrib - 8:28 PM"); Console.WriteLine("Isha - 10:11 PM"); Console.WriteLine(); break; case "6/15/2017": case "06/15/2017": Console.WriteLine("Fajr - 3:32 AM"); Console.WriteLine("Sunrise - 5:14 AM"); Console.WriteLine("Dhuhr - 12:52 PM"); Console.WriteLine("Asr - 4:54 PM"); Console.WriteLine("Maghrib - 8:28 PM"); Console.WriteLine("Isha - 10:11 PM"); Console.WriteLine(); break; case "6/16/2017": case "06/16/2017": Console.WriteLine("Fajr - 3:32 AM"); Console.WriteLine("Sunrise - 5:14 AM"); Console.WriteLine("Dhuhr - 12:52 PM"); Console.WriteLine("Asr - 4:55 PM"); Console.WriteLine("Maghrib - 8:28 PM"); Console.WriteLine("Isha - 10:12 PM"); Console.WriteLine(); break; case "6/17/2017": case "06/17/2017": Console.WriteLine("Fajr - 3:32 AM"); Console.WriteLine("Sunrise - 5:14 AM"); Console.WriteLine("Dhuhr - 12:52 PM"); Console.WriteLine("Asr - 4:55 PM"); Console.WriteLine("Maghrib - 8:29 PM"); Console.WriteLine("Isha - 10:12 PM"); Console.WriteLine(); break; case "6/18/2017": case "06/18/2017": Console.WriteLine("Fajr - 3:32 AM"); Console.WriteLine("Sunrise - 5:15 AM"); Console.WriteLine("Dhuhr - 12:52 PM"); Console.WriteLine("Asr - 4:55 PM"); Console.WriteLine("Maghrib - 8:29 PM"); Console.WriteLine("Isha - 10:13 PM"); Console.WriteLine(); break; case "6/19/2017": case "06/19/2017": Console.WriteLine("Fajr - 3:32 AM"); Console.WriteLine("Sunrise - 5:15 AM"); Console.WriteLine("Dhuhr - 12:52 PM"); Console.WriteLine("Asr - 4:55 PM"); Console.WriteLine("Maghrib - 8:29 PM"); Console.WriteLine("Isha - 10:13 PM"); Console.WriteLine(); break; case "6/20/2017": case "06/20/2017": Console.WriteLine("Fajr - 3:32 AM"); Console.WriteLine("Sunrise - 5:15 AM"); Console.WriteLine("Dhuhr - 12:53 PM"); Console.WriteLine("Asr - 4:55 PM"); Console.WriteLine("Maghrib - 8:30 PM"); Console.WriteLine("Isha - 10:13 PM"); Console.WriteLine(); break; case "6/21/2017": case "06/21/2017": Console.WriteLine("Fajr - 3:32 AM"); Console.WriteLine("Sunrise - 5:15 AM"); Console.WriteLine("Dhuhr - 12:53 PM"); Console.WriteLine("Asr - 4:56 PM"); Console.WriteLine("Maghrib - 8:30 PM"); Console.WriteLine("Isha - 10:13 PM"); Console.WriteLine(); break; case "6/22/2017": case "06/22/2017": Console.WriteLine("Fajr - 3:33 AM"); Console.WriteLine("Sunrise - 5:15 AM"); Console.WriteLine("Dhuhr - 12:53 PM"); Console.WriteLine("Asr - 4:56 PM"); Console.WriteLine("Maghrib - 8:30 PM"); Console.WriteLine("Isha - 10:14 PM"); Console.WriteLine(); break; case "6/23/2017": case "06/23/2017": Console.WriteLine("Fajr - 3:33 AM"); Console.WriteLine("Sunrise - 5:15 AM"); Console.WriteLine("Dhuhr - 12:53 PM"); Console.WriteLine("Asr - 4:56 PM"); Console.WriteLine("Maghrib - 8:30 PM"); Console.WriteLine("Isha - 10:13 PM"); Console.WriteLine(); break; case "6/24/2017": case "06/24/2017": Console.WriteLine("Fajr - 3:33 AM"); Console.WriteLine("Sunrise - 5:16 AM"); Console.WriteLine("Dhuhr - 12:52 PM"); Console.WriteLine("Asr - 4:56 PM"); Console.WriteLine("Maghrib - 8:30 PM"); Console.WriteLine("Isha - 10:14 PM"); Console.WriteLine(); break; default: Console.WriteLine("Error - Please make sure you're input is similar to the example shown"); break; } } 方法而不只是使用匿名类。

这就是例子:

ActionPerformed

第二个选项只是添加一个匿名类,我不建议这是因为代码可能有点脏。

public class Programs implements ActionListener{

    // When you create your button
    JButton btnNewButton = new JButton("Calculate Total");
    btnNewButton.setFont(new Font("Tahoma", Font.PLAIN, 43));
    // This line tells the button where the actionListener will be 
    // handlded
    btnNewButton.addActionListener(this);



   //all your code...

   // I will catch all the actions you send me
   public void actionPerformed(ActionEvent e){
     // Here goes the name of the instance, remember that.
     if(e.getSource(btnNewButton)){
        //code to execute when you click the button ...
     }
   }

}

在这个例子中,您不需要实现ActionListener接口,只需创建一个匿名类并在内部协助一个方法。

祝你好运,如果你有任何问题,我会在这里。