class在我的包中不公开,无法从外部包访问

时间:2014-05-01 23:44:33

标签: java javafx

我正在使用以下ControlFX项目。因此,在我的包中创建了一个Dialogs.java类并从那里粘贴了代码。

由于我不在包org.controlsfx.dialog内,我必须执行以下操作:

import org.controlsfx.dialog.LightweightDialog;

我收到以下错误,如下图所示:image

当我进入包裹org.controlsfx.dialog并打开时,LightweightDialog.class

我无法公开上课。

我该如何克服这种情况?请指教。

1 个答案:

答案 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 DialogsDialog