java - 在 Eclipse 中运行应用程序时,JFrame 将无法打开

标签 java eclipse swing

我正在尝试创建一个简单的 GUI,它采用两个值,并根据用户选择的按钮进行减法/加法/除法。我对我的代码感到满意,但由于某种原因,当我运行我的程序时,我没有得到任何可见的框架,而且我也没有得到任何错误。

import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JButton;
import java.awt.Font;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class Calc {

private JFrame frame;
private JTextField firstNumber;
private JTextField secondNumber;
private JTextField textField_2;

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

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

/**
 * Initialize the contents of the frame.
 */
private void initialize() {
    frame = new JFrame();
    frame.setTitle("Simple Calculator");
    frame.setBounds(100, 100, 450, 300);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.getContentPane().setLayout(null);

    firstNumber = new JTextField();
    firstNumber.setBounds(28, 41, 156, 26);
    frame.getContentPane().add(firstNumber);
    firstNumber.setColumns(10);

    secondNumber = new JTextField();
    secondNumber.setBounds(28, 145, 156, 26);
    frame.getContentPane().add(secondNumber);
    secondNumber.setColumns(10);

    JLabel lblNewLabel = new JLabel("First Number");
    lblNewLabel.setBounds(28, 27, 110, 16);
    frame.getContentPane().add(lblNewLabel);

    JLabel lblNewLabel_1 = new JLabel("Second Number");
    lblNewLabel_1.setBounds(28, 131, 110, 16);
    frame.getContentPane().add(lblNewLabel_1);

    JLabel answerLabel = new JLabel("ANSWER:");
    answerLabel.setFont(new Font("Lucida Grande", Font.PLAIN, 20));
    answerLabel.setBounds(216, 46, 190, 16);
    frame.getContentPane().add(answerLabel);

    JButton plusButton = new JButton("Add");
    plusButton.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            try{
                int number1 = Integer.parseInt(firstNumber.getText());
            }
            catch (Exception exc){
                JOptionPane.showMessageDialog(frame,"Error: bad first number.");
                return;
            }
            try{
                int number2 = Integer.parseInt(secondNumber.getText());
            }
            catch (Exception exc){
                JOptionPane.showMessageDialog(frame,"Error: bad second number.");
                return;
            }
            int number1 = 0, number2 = 0;
            int answer = number1 + number2;
            answerLabel.setText("The answer is: "+answer);
        }
    });
    plusButton.setToolTipText("Adds first from second number");
    plusButton.setBounds(28, 183, 117, 29);
    frame.getContentPane().add(plusButton);

    JButton subtractButton = new JButton("Subtract");
    subtractButton.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            try{
                int number1 = Integer.parseInt(firstNumber.getText());
            }
            catch (Exception exc){
                JOptionPane.showMessageDialog(frame,"Error: bad first number.");
                return;
            }
            try{
                int number2 = Integer.parseInt(secondNumber.getText());
            }
            catch (Exception exc){
                JOptionPane.showMessageDialog(frame,"Error: bad second number.");
                return;
            }
            int number1 = 0, number2 = 0;
            int answer = number1 - number2;
            answerLabel.setText("The answer is: "+answer);
        }
    });
    subtractButton.setToolTipText("Subtracts first from second number");
    subtractButton.setBounds(157, 183, 117, 29);
    frame.getContentPane().add(subtractButton);

    JButton divideButton = new JButton("Divide");
    divideButton.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            try{
                int number1 = Integer.parseInt(firstNumber.getText());
            }
            catch (Exception exc){
                JOptionPane.showMessageDialog(frame,"Error: bad first number.");
                return;
            }
            try{
                int number2 = Integer.parseInt(secondNumber.getText());
            }
            catch (Exception exc){
                JOptionPane.showMessageDialog(frame,"Error: bad second number.");
                return;
            }
            int number1 = 0, number2 = 0;
            int answer = number1 / number2;
            answerLabel.setText("The answer is: "+answer);
        }
    });
    divideButton.setToolTipText("Divides first from second number");
    divideButton.setBounds(289, 183, 117, 29);
    frame.getContentPane().add(divideButton);

    textField_2 = new JTextField();
    textField_2.setBounds(216, 94, 130, 26);
    frame.getContentPane().add(textField_2);
    textField_2.setColumns(10);
}
}

最佳答案

啊!这是我之前遇到过的一个问题。这个技巧解决了这个问题。以下是具体操作方法。

确保您已经构建了它。或者您可以启用项目 --> 自动构建。

设置上述选项后,尝试清理工作区。项目 --> 清理并清理您导入的所有项目。

现在重新启动 Eclipse,您就可以启动您的程序了。

ps:如果它不起作用,请发送带有控制台的 Eclipse 图片,以便我们可以看到日志和运行配置的图片。

关于java - 在 Eclipse 中运行应用程序时,JFrame 将无法打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46750852/

相关文章:

java - 如何构建服务以及如何在 CQ5 中激活服务

java - 使用 kit.insertHTML() 更新时,jTextPane 中的第一个单词消失

java - 我怎样才能解决 schemaspy 中的这个错误

java - Java中的多线程(并行代码比串行慢得多)

java - Eclipse 突然在以前工作的代码上给出解析器异常错误 - Android、Java

java - Android 模拟器总是横向启动

android - API 21 滑动标签 Activity

java - 将 Action 发送给正在监听它的按钮

java - 检测 jpanel 焦点的变化

java - (JAVA) System.in 上的终止函数 .. 可能吗?