所以,在JavaFX上切齿,到目前为止一切进展顺利。
然而,所有文本字段都有一条横跨它们的线,从顶部算起大约10px。
不仅在我的应用程序中,在SceneBuilder应用程序中也是如此。
注意,我没有使用任何明确的CSS,我不知道SceneBuilder使用什么。屏幕截图来自SceneBuilder,我的屏幕看起来一样。
所以,这是基本的东西。
java -version
java version "1.8.0_45"
Java(TM) SE Runtime Environment (build 1.8.0_45-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode)
在Mac OS 10.9.5上
只是好奇是否还有人看过这个并有建议。
编辑:我下载了样本,这显然与Modena主题有关。里海主题看起来不错。下面是Modena的屏幕截图。jartextfields部分。有趣的是,TextArea
遇到了类似的问题,尽管不像TextField
那样普遍。
更多附录:
人们一直在吵着要这个,所以它来了。我基本上是这样做的:https://docs.oracle.com/javafx/2/get_started/form.htm并使用默认的Netbeans 8.0.2 JavaFX应用程序项目。只需从网站上剪切粘贴即可。
public class Fxlinetest extends Application {
@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);
Label userName = new Label("User Name:");
grid.add(userName, 0, 1);
TextField userTextField = new TextField();
grid.add(userTextField, 1, 1);
Label pw = new Label("Password:");
grid.add(pw, 0, 2);
PasswordField pwBox = new PasswordField();
grid.add(pwBox, 1, 2);
Button btn = new Button("Sign in");
HBox hbBtn = new HBox(10);
hbBtn.setAlignment(Pos.BOTTOM_RIGHT);
hbBtn.getChildren().add(btn);
grid.add(hbBtn, 1, 4);
final Text actiontarget = new Text();
grid.add(actiontarget, 1, 6);
Scene scene = new Scene(grid, 300, 275);
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
java version "1.8.0_66"
Java(TM) SE Runtime Environment (build 1.8.0_66-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.66-b17, mixed mode)
java version "1.8.0_74"
Java(TM) SE Runtime Environment (build 1.8.0_74-b02)
Java HotSpot(TM) 64-Bit Server VM (build 25.74-b02, mixed mode)
使用Caspian的主题屏幕:
System.setProperty("javafx.userAgentStylesheetUrl", "caspian");
嗯。。。我不是100%确定,因为虽然我有Linux平台,但我对jvm没有影响;但我还是试着模仿(?不确定我是否成功)无论如何,我想你描述的问题可能真的与此相关
您所表示的代码我做了一些修改,以显示如果组件按“某些”顺序排列,gridpanel线会发生什么情况;
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.TextField;
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;
public class BlackLineIssueJavaFXApplication1 extends Application {
@Override
public void start(Stage primaryStage) {
System.setProperty("javafx.userAgentStylesheetUrl", "Modena");
//Modena,caspian
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));
// grid.setGridLinesVisible(false);//<---
Text scenetitle = new Text("Welcome");//original
// Label scenetitle = new Label("Welcome");//modified
scenetitle.setFont(Font.font("Tahoma", FontWeight.NORMAL, 20));//original
// scenetitle.setFont(Font.font("Verdana", FontWeight.LIGHT, 30));//modified
grid.add(scenetitle, 0, 0, 2, 1);//original
// grid.add(scenetitle, 0, 0);//modified
Label userName = new Label("User Name:");//original
// Text userName = new Text("User Name:");
// userName.setFont(Font.font("Tahoma", FontWeight.NORMAL, 11));
// grid.add(userName, 0, 1);//original
grid.add(userName, 0, 1,1,2);//modified
grid.setGridLinesVisible(true);//<---
TextField userTextField = new TextField();
// userTextField.setFont(Font.font("Tahoma", FontWeight.NORMAL, 20));//modified
userTextField.setOpacity(0.5);//<----
// grid.add(userTextField, 1, 1);//original
grid.add(userTextField, 1, 1,1,2);//modified
grid.setGridLinesVisible(false);//<---
Button btn = new Button("Sign in");
HBox hbBtn = new HBox(10);
hbBtn.setAlignment(Pos.BOTTOM_RIGHT);
hbBtn.getChildren().add(btn);
grid.add(hbBtn, 1, 4);//original
//grid.add(hbBtn, 1, 3);//modified
final Text actiontarget = new Text();
grid.add(actiontarget, 1, 6);
Scene scene = new Scene(grid, 300, 275);
primaryStage.setScene(scene);
primaryStage.show();
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
launch(args);
}
}
运行的应用程序看起来像这样:
图A:
...因此,文本字段中出现的黑线距离约为10px,可能是因为Vgap设置为10;此外,见“欢迎”文字交叉但有垂直线;我测试了scenetitle的“不使用字体”是否正确定位(见图);
图像B
所以我猜GridPane可能有问题;可能默认的网格窗格有“可见的线条”或其他内容,但在组件添加了“已处理”的线条后,由于TextField应该包含“文本”和“字体”(请参见图像A垂直线条交叉文本,因为字体),重绘无法正常工作,您可以看到顶部的黑色线条,如图A所示;我无法完全模仿这种效果,但我仍然可以建议“未处置”行可能来自何处或其他方面:)
我将尝试进一步分析,无论如何,我在这个答案中描述的信息可能会帮助您找到从哪里开始调试;
如果您需要一些额外的信息,请让我知道;
祝你好运:)
我用来测试的工具包:
这是一个已知的未解决的错误。
问题似乎在于,它对开发人员来说是不可复制的。
在错误报告的注释中,建议使用jvm参数:
-Dprism.disableRegionCaching=true
然而,如果有人能够复制这种非常罕见的错误,我的建议是:
我的代码中有JavaFX文本字段,希望在文本字段上为不同的事件添加一个操作。 今天,我只在文本字段中写入一些文本后按enter键时得到一个操作。如何添加处理tab press的操作?还有,当文本字段用鼠标点击失去焦点时,该如何反应? 当我读留档应该是可能的:https://docs.oracle.com/javase/8/javafx/api/javafx/scene/control/TextFi
问题内容: 我想在我存储在Elasticsearch 7.3中的文档中搜索单词 我想要在以前版本的Elasticsearch上工作的示例是: 但是此查询不适用于Elasticsearch 7+,因为已删除。现在该字段消失了,我该如何编写查询以完成相同的任务? 注意:我已经阅读了将所有字段复制到自定义字段中的建议,但是这要求显式地写出每个字段以包括在all_fields字段中。由于我有很多小字段,因
我在寻找一种方法来放弃我的程序中的一个getter。我有一堆动态创建的文本字段: 下面是getter,我想在这里返回聚焦的TextField 处理程序将接收聚焦字段并调用我的“model”-class中的checkInput()方法。 此刻,它接收到一个由我自己设置的预定义字段。检查答案的代码有效。感谢任何帮助我的人,如果我自己找到了一个方法,我一定会把它贴在这里。
我正在从事一个JavaFX 2.2项目,在使用TextField控件时遇到问题。我想限制用户可以在每个文本字段中输入的字符数。但是,我找不到属性或类似maxlength的东西。Swing中也存在同样的问题,通过这种方式解决了。JavaFX 2.2如何解决这个问题?
问题内容: 我需要通过使用命令替换表的列中的一些字符。 我知道该命令需要一个列名,然后是要更改的文本(在以下示例中为“ a”字符)和新文本(在以下示例中为“ e”字符)。 这样执行该命令将用’ e* ‘字符更改表的列中所有’ a ‘出现次数。 * 但是,如果我需要为每一列而不只是为每一列执行命令,该怎么办?这可能吗? 谢谢 问题答案: 使用以下SQL查询来生成您需要替换所有列中的值的SQL查询。
我不明白为什么我所有的bean在控制器中都是空的。我知道这是一个常见的问题,但我不是用实例化对象。 控制器: 当我请求我在上收到一个NullPointerException。 我的服务 网络配置 主要的 启动应用程序时,我可以在日志中看到bean实际上正在自动连接到控制器: 所以我不明白为什么当我试图访问控制器中的时,它是空的。我不会在任何地方用实例化控制器。 裁剪异常 编辑: 我已经删除了网页。