Wil*_*ung 72 java textbox javafx
所以,在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)
Run Code Online (Sandbox Code Playgroud)
在Mac OS 10.9.5上
只是好奇,如果有人看到这个并有一个建议.
编辑:我下载了样本,这显然与Modena主题有关.Caspian主题看起来很好.以下是Modena.jar TextFields部分的屏幕截图.有趣的是,它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);
}
}
Run Code Online (Sandbox Code Playgroud)
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)
Run Code Online (Sandbox Code Playgroud)
这是来自ScenicView 8.6的ThreeDOM视图的屏幕截图,请注意以下行:

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)
Run Code Online (Sandbox Code Playgroud)
以下是使用Caspian主题的示例屏幕:
System.setProperty("javafx.userAgentStylesheetUrl", "caspian");
Run Code Online (Sandbox Code Playgroud)
这是一个已知未解决的错误.
问题似乎是开发人员无法重现.
在错误报告的评论中,建议使用jvm参数:
-Dprism.disableRegionCaching=true
Run Code Online (Sandbox Code Playgroud)
但是,如果有人能够重现这个非常罕见的错误,我的建议是:
嗯...我不是 100% 确定,因为尽管我有 Linux 平台,但我对 jvm 没有影响;但我仍然尝试模仿(?不确定我成功得很好)无论如何,我想你描述的问题可能与
我对您所代表的代码进行了一些修改,以显示如果组件位于“某些”顺序,网格面板行会发生什么情况;
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);
}
}
Run Code Online (Sandbox Code Playgroud)
正在运行的应用程序如下所示:
图片A:
...所以黑线出现在距离大约 10px 的文本字段中,可能只是因为 Vgap 设置为 10;此外,看到“欢迎”文字是交叉的,但有垂直线;我测试了场景标题的“不使用字体”是否正确定位(见图);
图B
所以我猜 GridPane 可能有问题;也许默认的 GridPane 具有“可见的线条”或其他内容,但是在组件添加了“已配置”的线条之后,但由于 TextField 应该包含带有“字体”的“文本”(参见图像由于字体而导致垂直线与文本交叉),因此重绘不会无法正常工作,您可以看到顶部有黑线,如图 A 所示;我无法完全模拟效果,但我仍然可以建议“未处理”线可能来自何处或其他什么:)
无论如何,我会尝试进一步分析,我在这个答案中描述的信息可能会帮助您找到从哪里开始调试;
如果您需要一些其他信息,请告诉我;
祝你好运 :)
我用来测试的工具包: