Java 类中的第二个addActionListener未打开新窗口

Java 类中的第二个addActionListener未打开新窗口,java,swing,Java,Swing,因此,我一直在使用GUI,并为我的用户创建了一个相对不错的欢迎框架。 该框架有两个文本选项,理论上,每个文本选项都应该打开一个新窗口 其中一个文本框的功能与预期完全相同,可以根据需要打开一个新窗口,而另一个则不能 以下是我的代码: package gui; import java.awt.BorderLayout; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets;

因此,我一直在使用GUI,并为我的用户创建了一个相对不错的欢迎框架。
该框架有两个文本选项,理论上,每个文本选项都应该打开一个新窗口

其中一个文本框的功能与预期完全相同,可以根据需要打开一个新窗口,而另一个则不能

以下是我的代码:

package gui;

import java.awt.BorderLayout;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class Frame1Welcome extends JFrame {

private JLabel intro1 = new JLabel(
        "Welcome to Twitter Farmer.");
private JLabel intro2 = new JLabel(
        "In order to start farming up those tweets, first decide if you want to farm for a specific amount of time, or farm a certain amount of tweets.");
private JLabel intro3 = new JLabel(
        "By specifying the amount of time you wish to farm for, Twitter Farmer will gather as many tweets as it can in said time.");
private JLabel intro4 = new JLabel(
        "If you know how many you want however, Twitter Farmer will instead gather up the exact desired amount.");
private JLabel intro5 = new JLabel(
        "Please enter the time in seconds, or the amount of tweets as whole number, and press the 'ENTER'-key.");

private JLabel tweets = new JLabel("Tweets:");
private JLabel time = new JLabel("Time:");

private JTextField twitterText = new JTextField(10);
private JTextField timeText = new JTextField(10);

private String inputText; // REMOVE ME

public Frame1Welcome(String title) {
    super(title);

    launchGUI.setMyDefaults(this, 800, 300);

    GridBagConstraints gbc = new GridBagConstraints();
    gbc.insets = new Insets(0, 0, 10, 0);

    JPanel northernPanel = new JPanel(new GridBagLayout());
    this.add(northernPanel, BorderLayout.NORTH);

    gbc.gridy = 0;
    northernPanel.add(intro1, gbc);
    gbc.gridy = 1;
    northernPanel.add(intro2, gbc);
    gbc.gridy = 2;
    northernPanel.add(intro3, gbc);
    gbc.gridy = 3;
    northernPanel.add(intro4, gbc);
    gbc.gridy = 4;
    northernPanel.add(intro5, gbc);

    JPanel southernPanel = new JPanel(new GridBagLayout());
    this.add(southernPanel, BorderLayout.CENTER);

    gbc.gridx = 0;
    southernPanel.add(tweets, gbc);
    gbc.gridx = 1;
    southernPanel.add(twitterText, gbc);

    gbc.gridy = 1;

    gbc.gridx = 0;
    southernPanel.add(time, gbc);
    gbc.gridx = 1;
    southernPanel.add(timeText, gbc);

    twitterText.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {

            inputText = twitterText.getText(); // REMOVE ME
            dispose();

            System.out.println("TWEETS:" + inputText); // REMOVE ME

            try {
                new Frame3Tweets("Twitter Farmer - Tweet-farm by desired amount", Integer.parseInt(timeText.getText()));
                } catch (NumberFormatException error) {
                    //ADD INVALID NUMBER WINDOW 
                }

        }
    });

    timeText.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {

            inputText = timeText.getText(); // REMOVE ME
            dispose();

            System.out.println("TIME:" + inputText); // REMOVE ME

            try {
            new Frame2Time("Twitter Farmer - Tweet-farm over desired time", Integer.parseInt(timeText.getText()));
            } catch (NumberFormatException error) {
                //ADD INVALID NUMBER WINDOW 
            }

        }
    });

}

}
首先,所有注释都只是为了提醒我代码后面要做的事情

其次,假设
launchGUI.setMyDefaults(这是800300)
只是我设置大小和可见性的方法,它适用于其他窗口

第三,假设
newframe2time
newframe3tweets
都是功能性的

因此,我的问题是:

为什么
timeText.addActionListener
创建一个新窗口,而
twitterText.addActionListener
不创建

我试着让twitterText.addActionListener在用户给出一个数字后也创建其他窗口,而不会弹出任何这样的窗口


有人能告诉我我做错了什么,最好是如何修复它吗?

通过采纳Maroun Maroun的建议,并添加一个
错误。printStackTrace()
我能够扣除我的问题:

try {
   new Frame3Tweets("Twitter Farmer - Tweet-farm by desired amount", Integer.parseInt(timeText.getText()));
} catch (NumberFormatException error) {
   error.printStackTrace(); 
}
该方法将
timeText.getText()
作为参数,该参数为空,因此强制所有内容崩溃和烧录

它应该使用具有值的
tweetText.getText()


所以,孩子们,听从Maroun Maroun的建议,不要让你的
catch
块空白

catch
块留空是一种不好的做法。你可能会得到一个例外,但你不知道你是,因为你抓住它,什么也不做。甚至都没有显示。当任何一个领域被操作时,主框架会关闭吗?啊,你知道,没有比自学更好的学习方法了。我接受了您的建议@marounnaroun并添加了一个错误。printStackTrace()为我提供了所有答案。我一会儿就回答我自己的问题!非常感谢。另见