كل ما لدي من JavaFX TextFields لها خطوط فيها


0 Answers

Emm ... أنا لست متأكدًا بنسبة 100٪ لأنني لا أملك التأثير على jvm على الرغم من أن لدي نظام Linux؛ ولكن ما زلت حاولت محاكاة (؟ غير متأكد من أنني نجحت بشكل جيد) على أي حال أعتقد أن القضية التي تصفها قد تكون ذات صلة حقا

  • أ) الخط
  • ب) مشكلة إعادة رسم

تم تعديل الرمز الذي قمت بتمثيله قليلاً لإظهار ما يحدث لخطوط الشبكة إذا كانت المكونات موجودة في أمر "بعض" ؛

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);
    }

}

يبدو تطبيق التشغيل كما يلي:

الصورة أ:

... لذلك يظهر الخط الأسود في حقل النص في المسافة حوالي 10 بكسل ربما لمجرد تعيين Vgap إلى 10 ؛ علاوة على ذلك ، يتم عرض نص "الترحيب" ولكن مع خطوط عمودية. لقد اختبرت ما إذا كان "عدم استخدام الخط" لعنصر scenetitle يقع بشكل صحيح (انظر الصورة) ؛

الصورة ب

ربما شيء ما ربما خاطئ مع GridPane أعتقد. ربما يحتوي GridPane الافتراضي على "خطوط مرئية" أو شيء ما ولكن بعد أن تقوم المكونات بإضافة السطور "تم التخلص منها" ولكن بسبب TextField الذي يجب أن يحتوي على "text" مع "font" (راجع صورة خطوط عمودية تعبر النص بسبب الخط ) فإن إعادة الرسم غير موجودة. تعمل بشكل صحيح ويمكنك رؤية الخط الأسود في الأعلى كما تظهر الصورة A ؛ لا أستطيع محاكاة التأثير تمامًا ولكن لا يزال يمكنني اقتراح مكان قد يأتي منه السطر "بدون التخلص منه" أو شيء ما :)

سأحاول تحليل أكثر قليلا على أي حال قد تساعد المعلومات التي أصفها في هذه الإجابة في العثور على مكان بدء التصحيح.

إذا كنت بحاجة إلى بعض المعلومات الإضافية ، فيرجى إبلاغي بها ؛

حظا طيبا وفقك الله :)

مجموعة الأدوات التي استخدمتها لاختبار:

  • جدك-1.0.8_25
  • jre-1.8.0_60 (نظام التشغيل Linux x64)
  • بيئة تطوير متكاملة: netbeans 8.0.1
Question

لذا ، فإن قطع أسناني على JavaFX ، حتى الآن الأمور تسير على ما يرام.

ومع ذلك ، تحتوي جميع الحقول النصية على سطر يتم تشغيله عبرها ، أو 10 بكسل أو أكثر من أعلى.

ليس فقط في طلبي ، ولكن في تطبيق 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.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);
    }
}

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)

إليك لقطة شاشة لعرض ThreeDOM من ScenicView 8.6 ، لاحظ الخط:

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");




Related