我正在为一个班级项目编写程序,我们只需要使用JavaFX(而不是Swing或AWT)来制作“课程注册”应用程序。对于其中一个Java类,我们需要添加一个菜单栏。将本站点和其他来源的一些教程拼凑在一起后,我设法获得了正确的设置,但是现在我的按钮不起作用了。 MenuBar附加到BorderPane对象,其余的附加到GridPane对象。
我对JavaFX还是很陌生,我敢肯定这里的设置有问题,但是我一生都无法弄清楚自己在做什么错。
有人介意看一下并帮助我看看我做错了什么吗?我真的很感激。谢谢!
import javafx.application.Application;
import javafx.application.Platform;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.HBox;
import javafx.scene.text.Font;
import javafx.scene.text.FontWeight;
import javafx.scene.text.Text;
import javafx.stage.Stage;
import javafx.scene.control.*;
import javafx.scene.layout.BorderPane;
public class MyClasses extends Application
{
public static void main(String[] args)
{
launch(args);
}
@Override
public void start(Stage primaryStage)
{
primaryStage.setTitle("JavaFX Welcome");
GridPane grid = new GridPane();
grid.setAlignment(Pos.CENTER);
grid.setHgap(10);
grid.setVgap(10);
grid.setPadding(new Insets(25, 25, 25, 25));
Text scenetitle = new Text("Welcome");
scenetitle.setFont(Font.font("Tahoma", FontWeight.NORMAL, 20));
grid.add(scenetitle, 0, 0, 2, 1);
Button addBtn = new Button("Add");
HBox hbBtn = new HBox(10);
hbBtn.setAlignment(Pos.BOTTOM_RIGHT);
hbBtn.getChildren().add(addBtn);
grid.add(hbBtn, 1, 10);
final Text actiontarget = new Text();
grid.add(actiontarget, 1, 6);
Button logBtn = new Button("Remove");
HBox hbBtn2 = new HBox(10);
hbBtn.setAlignment(Pos.BOTTOM_LEFT);
hbBtn.getChildren().add(logBtn);
grid.add(hbBtn2, 1, 10);
addBtn.setOnAction(new EventHandler<ActionEvent>()
{
@Override
public void handle(ActionEvent e)
{
Platform.exit();
}
});
BorderPane root = new BorderPane();
Scene scene = new Scene(root, 300, 275);
ObservableList<String> items = FXCollections.observableArrayList();
ListView<String> lv = new ListView<>(items);
lv.setPrefSize(200, 100);
grid.add(lv, 1, 5);
MenuBar menuBar = new MenuBar();
menuBar.prefWidthProperty().bind(primaryStage.widthProperty());
root.setTop(menuBar);
root.setCenter(grid);
// File menu - manage classes, exit
Menu manageMenu = new Menu("Manage Classes");
MenuItem addMenuItem = new MenuItem("Add");
MenuItem removeMenuItem = new MenuItem("Remove");
manageMenu.getItems().addAll(addMenuItem, removeMenuItem);
Menu exitMenu = new Menu("Exit");
MenuItem exitItem = new MenuItem("Exit");
exitMenu.getItems().addAll(exitItem);
exitItem.setOnAction(actionEvent -> Platform.exit());
menuBar.getMenus().addAll(manageMenu, exitMenu);
primaryStage.setScene(scene);
primaryStage.show();
}
}