Java GUI在IDE和命令行中的行为不同
我正在用Java编写一个GUI应用程序,并使用Eclipse。但是,当我在IDE本身中使用命令行vs编译和运行时,代码的结果表现不同。代码如下:Java GUI在IDE和命令行中的行为不同,java,javafx,Java,Javafx,我正在用Java编写一个GUI应用程序,并使用Eclipse。但是,当我在IDE本身中使用命令行vs编译和运行时,代码的结果表现不同。代码如下: import javafx.application.Application; import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.geometry.Insets; import javafx.geometry.Pos; import javaf
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.scene.layout.GridPane;
import javafx.stage.Stage;
import javafx.scene.text.Text;
import javafx.scene.text.Font;
import javafx.scene.text.FontWeight;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.control.PasswordField;
public class MainGUI extends Application
{
public static void main (String args[])
{
launch(args);
}
@Override
public void start(Stage primaryStage) throws Exception
{
primaryStage.setTitle("Citation Machine");
GridPane grid1 = new GridPane();
grid1.setAlignment(Pos.CENTER);
grid1.setHgap(10);
grid1.setVgap(10);
grid1.setPadding(new Insets(20, 0, 0, 0));
Label l = new Label("Welcome. Please enter your URL.");
grid1.add(l, 0, 0);
TextField urlField = new TextField();
grid1.add(urlField, 0, 1);
Button submit = new Button("OK");
submit.setOnAction(e -> System.out.println(urlField.getText()));
grid1.add(submit, 1, 1);
GridPane grid = new GridPane();
grid.setAlignment(Pos.TOP_CENTER);
grid.setHgap(10);
grid.setVgap(10);
grid.setPadding(new Insets(20, 0, 0, 0));
Text scenetitle = new Text("Welcome");
scenetitle.setFont(Font.font("Tahoma", FontWeight.NORMAL, 20));
grid.add(scenetitle, 0, 0, 2, 1);
Label titleLabel = new Label("Article Title:");
grid.add(titleLabel, 0, 1);
TextField title = new TextField();
grid.add(title, 1, 1);
Label authorLabel = new Label("Author:");
grid.add(authorLabel, 0, 2);
TextField author = new TextField();
grid.add(author, 1, 2);
Label webTitleLabel = new Label("Website Title:");
grid.add(webTitleLabel, 0, 3 );
TextField webTitle = new TextField();
grid.add(webTitle, 1, 3);
Label publisherLabel = new Label("Website Publisher:");
grid.add(publisherLabel, 0, 4);
TextField publisher = new TextField();
grid.add(publisher, 1, 4);
Label urlLabel = new Label("URL:");
grid.add(urlLabel, 0, 5);
TextField url = new TextField();
grid.add(url, 1, 5);
Label monthLabel = new Label("Month of Publication:");
grid.add(monthLabel, 0, 6);
TextField month = new TextField();
grid.add(month, 1, 6);
Label dayLabel = new Label("Day of Publication");
grid.add(dayLabel, 0, 7);
TextField day = new TextField();
grid.add(day, 1, 7);
Label yearLabel = new Label("Year of Publication:");
grid.add(yearLabel, 0, 8);
TextField year = new TextField();
grid.add(year, 1, 8);
// grid.setGridLinesVisible(true);
Scene urlChecker = new Scene(grid1, 300, 150);
Scene information = new Scene(grid, 400, 500);
primaryStage.setScene(urlChecker);
primaryStage.show();
}
}
当我编译并运行CL时,它按预期工作,在单击按钮时将“按下”打印到CL。当我在IDE中运行它时,什么都没有发生。为什么会出现这种情况?与命令行相比,与IDE关联的Java版本是否不同?@brw59如何检查?将lambda表达式转换为方法,以便可以在其中设置断点。使用Eclipse对我来说很好。最可能的解释是,项目需要重建,而且它运行的是在添加按钮处理程序之前编译的项目的旧版本。尝试在IDE中清理和重建项目。如果在生成后找不到要执行的类,则项目配置中会出现严重问题。检查构建配置和运行配置,确保一切都有意义。