Tag: javafx 8

JavaFX-CSS:如何将父母的风格“移动”给孩子?

触发这个是一个快速实验来解决TreeItem选择宽度 :要求是仅突出显示文本,而不是整个树单元格。 没有比那更容易的事了(弗雷德里克说:) 使用Label作为图形实现自定义TreeCell(并根据需要使用项目配置标签) 删除选择样式(主要是单元格中的高亮背景) 将高亮样式添加到标签中 类似的东西(使用它的可运行的例子在最后): public static class MyTreeCell extends TreeCell { private Label label; public MyTreeCell() { getStyleClass().add(“tree-text-only”); } @Override public void updateItem(String item, boolean empty) { super.updateItem(item, empty); if (empty) { setText(null); setGraphic(null); } else { if (label == null) { label = new Label(); } label.setText(item); setGraphic(label); } } } […]

如何使用javafx textfield maxlength

如何在我的主类javafx中使用此代码。 这样我就可以在javafx texfield中设置字符的最大长度。 class LimitedTextField extends TextField { private final int limit; public LimitedTextField(int limit) { this.limit = limit; } @Override public void replaceText(int start, int end, String text) { super.replaceText(start, end, text); verify(); } @Override public void replaceSelection(String text) { super.replaceSelection(text); verify(); } private void verify() { if (getText().length() > limit) { setText(getText().substring(0, limit)); […]

选择打开JavaFX窗口的监视器

我有两台显示器。 我在第二台显示器上打开Eclipse但是当我运行JavaFX代码时,JavaFX窗口总是在第一台显示器中打开,每次我必须将它拖到第二台显示器上才能使用它。 我必须这样做,因为当它在第一个监视器上打开时,场景中没有任何组件被加载。 仅当我将其拖动到第二个监视器时才会加载它。 但是,当我断开第二台显示器时,它会正确加载。 有人可以帮帮我吗? 默认情况下,如何在第二台显示器上打开窗口? 注意:我的第一台显示器是Macbook Pro,第二台是用作外接显示器的iMac。 回应评论: 使用任何简单的javaFX代码都会在screen1上正确加载组件的问题。 例如,为方便起见,我将@Sergey提供的代码作为答案。 码: public class FXScreens extends Application { @Override public void start(Stage stage) { VBox root = new VBox(10); root.setAlignment(Pos.CENTER); Scene scene = new Scene(root, 200, 250); int index = 1; for (Screen screen : Screen.getScreens()) { Rectangle2D bounds = screen.getVisualBounds(); Button btn = […]

如何单击加载到JavaFX Webengine中的网站上的按钮

我是JavaFX的新手。 我已成功将网站加载到我的JavaFX应用程序中。 我想从我的java应用程序登录到该网站。 到目前为止,我能够将我的登录值插入相应的输入框,但我无法弄清楚如何单击提交按钮。 有人能帮我吗。 这是我到目前为止所拥有的。 这是我的控制器类。 public class Controller implements Initializable{ @FXML protected TextField usernameLogin; @FXML protected TextField passwordLogin; @FXML protected Button loginButton; @FXML protected WebView webviewBrowser; @Override public void initialize(URL location, ResourceBundle resources) { final WebEngine engine = webviewBrowser.getEngine(); engine.load(“http://gmail.com”); engine.setJavaScriptEnabled(true); loginButton.setOnAction(new EventHandler() { @Override public void handle(ActionEvent event) { String username = […]

如何在JavaFX中的ComboBox中为项添加值

如何为combobox中的项添加值,以便当用户从ComboBox选择项时,我能够显示该项的价格 例如。 如果用户选择动物,我可以显示该动物的价格。 用户选择dog然后我可以显示$45的价格。 public class comboBox extends Application { Stage window; Scene scene; Button button; ComboBox comboBox; public static void main(String[] args) { launch(args); } @Override public void start(Stage primaryStage) throws Exception { window = primaryStage; window.setTitle(“ComboBox”); button = new Button(“Submit”); comboBox = new ComboBox(); comboBox.getItems().addAll( “cat”, “dog”, “bird” ); comboBox.setPromptText(“Please select one”); button.setOnAction(e […]

如何在JavaFX 8中向TableView标题单元格添加工具提示

有谁知道如何将工具提示添加到TableView中的列标题? 有很多地方解释了如何将工具提示添加到数据单元格,但我没有找到将工具提示添加到标题的方法。 使用ScenicView工具,我可以看到标题是TableColumnHeader对象中的标签,但似乎它不是公共对象。 有什么建议么 ?

JavaFX 8如何在几乎空的Application类中启动JavaFX Application线程?

可以说,我们有以下课程: import javafx.application.Application; import javafx.stage.Stage; public class Test extends Application { public Test() { System.out.println(“Constructor”); } @Override public void start(Stage primaryStage) throws Exception { System.out.println(“start”); } public static void main(String… args) { System.out.println(“main”); } } 它源自Application但它不使用任何方法。 通常通过在main中调用launch(args)来启动JavaFX应用程序。 当我启动这个程序时,唯一的输出是“main”,因此不会调用构造函数和start,但程序不会因为运行JavaFX Application线程而终止。 但它来自哪里? 我做了一些调试,发现在main方法运行之前,线程是从主线程启动的。 堆栈跟踪以NativeMethodAccessorImpl开头。 为了更加奇怪:当我从另一个类启动main方法时,JavaFX Application线程没有启动: public class Test2 { public static void main(String[] args) { Test.main(args); […]

在JavaFX 8中管理multithreading的最佳方法是什么?

我正在尝试使用multithreading来找到影响JavaFX GUI元素的形状和内容的有效方法,例如简单的Pane 。 假设我有一个简单的Pane ,我在给定的时间点上显示填充的Circle ,我想要有可能回答它们,例如通过敲击相应的键。 到目前为止,为此目的,我尝试使用类与Runnable接口的实现并在其中创建经典的Thread对象,以便从外部JavaFX Pane添加和/或删除元素,这些元素被传递给那个“线程类” “在其主要Application类的构造函数参数中。 比如,两个类,1)应用程序和2)线程类,看起来像这样: import javafx.application.Application; import javafx.scene.Parent; import javafx.scene.Scene; import javafx.scene.layout.BorderPane; import javafx.scene.layout.Pane; import javafx.scene.paint.Color; import javafx.scene.shape.Circle; import javafx.stage.Stage; public class ClassApplication extends Application { private Pane pane; public Parent createContent() { /* layout */ BorderPane layout = new BorderPane(); /* layout -> center */ pane = new […]

JavaFX:如何使用Task将值从后台线程传递到JavaFX UI线程

我有一个工作任务,它不断使用Web服务并返回整数值。 我的应用程序由不同的(30)文本框和相关的单选按钮组成。 当我单击单选按钮时,我想将背景任务中的值显示到单选按钮旁边的文本字段中。 在这种特殊情况下,如何将值从后台线程传递给JAVAFX UI线程? 我是JavaFX的新手并使用以下方式。 这是正确的方法吗? @FXML private TabPane mainTabPane; 在主窗口控制器中创建任务,并在主窗口控制器中运行 myScheduledService.setPeriod(Duration.seconds(10)); myScheduledService.start(); 并创建任务: private class MyScheduledService extends ScheduledService { @Override protected Task createTask() { return new Task() { @Override protected String call() throws IOException, ParseException { // calling web service here Integer data = callToMyWebService(); Tab tab = mainTabPane.getTabs().get(mainTabPane.getTabs().size() – 1); BorderPane pane […]

如何分析传入消息(Android上的JavaFX)

我将我的JavaFX应用程序移植到我的Android设备上。 我希望我的应用程序读取传入的SMS消息并将其存储在数据库中。 我在StackOverflow中发现了几个问题,但我不知道如何在JavaFX方法中实现。 请帮忙!