我正在使用以下ControlFX项目。因此,在我的包中创建了一个Dialogs.java
类并从那里粘贴了代码。
由于我不在包org.controlsfx.dialog
内,我必须执行以下操作:
import org.controlsfx.dialog.LightweightDialog;
我收到以下错误,如下图所示:
当我进入包裹org.controlsfx.dialog
并打开时,LightweightDialog.class
,
我无法公开上课。
我该如何克服这种情况?请指教。
答案 0 :(得分:3)
如果该类不是公开的,则它不是公共API的一部分,因此您不打算(或者真的可以)使用它。
要在ControlsFX中使用轻量级对话框,您可以使用Dialogs
类API并在创建对话框时调用lightweight()
方法,也可以调用其中一个Dialog
类。 1}}构造函数,它为lightweight
属性取一个标记。
以下是使用Dialogs
流畅API的完整示例:
import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.ScrollPane;
import javafx.scene.control.Tab;
import javafx.scene.control.TabPane;
import javafx.scene.control.TextField;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
import org.controlsfx.dialog.Dialogs;
public class Main extends Application {
@Override
public void start(Stage primaryStage) {
try {
BorderPane root = new BorderPane();
Scene scene = new Scene(root,600,400);
TabPane tabPane = new TabPane();
Tab tab1 = new Tab("Tab 1");
BorderPane tab1Root = new BorderPane();
Button showDialogButton = new Button("Enter message...");
VBox messages = new VBox(3);
HBox buttons = new HBox(5);
buttons.setAlignment(Pos.CENTER);
buttons.setPadding(new Insets(5));
buttons.getChildren().add(showDialogButton);
tab1Root.setBottom(buttons);
ScrollPane messageScroller = new ScrollPane();
messageScroller.setContent(messages);
tab1Root.setCenter(messageScroller);
tab1.setContent(tab1Root);
Tab tab2 = new Tab("Tab 2");
tab2.setContent(new TextField("This is tab 2"));
tabPane.getTabs().addAll(tab1, tab2);
showDialogButton.setOnAction(event -> {
String response = Dialogs.create()
.lightweight()
.owner(tab1)
.masthead("Enter a new message")
.message("Enter your new message:")
.showTextInput();
if (response != null) {
messages.getChildren().add(new Label(response));
}
});
root.setCenter(tabPane);
primaryStage.setScene(scene);
primaryStage.show();
} catch(Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
launch(args);
}
}
使用Dialog
构造函数你会做这样的事情,虽然它还有很多工作要做:
// params are owner, title, lightweight:
Dialog dialog = new Dialog(someNode, "Dialog", true);
// lots of code here to configure dialog...
Action response = dialog.show();
ControlsFX真正的美丽是非常全面的文档。只需查看Javadocs for Dialogs和Dialog。