Текст текстового поля в InteractionDialog отображается только тогда, когда TextField имеет фокус - PullRequest
0 голосов
/ 29 апреля 2018

В InteractionDialog шахте есть TextField. Я установил стиль TextField в UIID, определенный в CSS. Фон TextField отображается, но не текст внутри него

no text appearing in the text field

хотя

    System.err.println("The textfield contains " + nameTf.getText()); 

печатает ожидаемый текст, а цвет переднего плана равен 0, как и ожидалось. Текст отображается только когда я нажимаю внутри TextField, но как только я нажимаю снаружи, он исчезает, как показано ниже:

text only appears when TextField has focus

На консоли не отображается нарушение EDT.

Используется следующий код:

   // Opens a dialog to input the name 
    nameButton.addActionListener((evt) -> {

        InteractionDialog nameDialog = new InteractionDialog();
        nameDialog.setLayout(new BorderLayout(BorderLayout.CENTER_BEHAVIOR_CENTER));

        // Hint for the user
        SpanLabel hintLabel = new SpanLabel("Indiquer un nom");
        hintLabel.setTextUIID(hintStyleName);

        TextField nameTf = new TextField(
                chosenAlarm.name.get() == null ? "Ma destination préférée" : chosenAlarm.name.get()
        );
        nameTf.setUIID(textFieldStyleName);
        System.err.println("The textfield colour is " + nameTf.getUnselectedStyle().getFgColor());

        // Validate text button
        Button validateNameButton = new Button("Valider >");
        validateNameButton.setUIID("ValidateButton");
        Container nameButtons = BoxLayout.encloseX(validateNameButton);

        validateNameButton.addActionListener((e) -> {
          // ...
        });

        nameDialog.addComponent(BorderLayout.CENTER, nameTf);
        nameDialog.addComponent(BorderLayout.NORTH, hintLabel);
        // The buttons will be centered
        nameDialog.addComponent(BorderLayout.SOUTH, BorderLayout.centerCenter(nameButtons));

        // Shows the dialog in the center of the screen   
        nameDialog.showPopupDialog(nameButton);

    });

Похоже, что при потере фокуса TextField текст исчезает. Что я должен сделать, чтобы показать текст, содержащийся в TextField, даже если пользователь не нажимает внутри TextField?

Обратите внимание: на снимках экрана скрываются некоторые элементы, поскольку приложение имеет совершенно секретный уровень АНБ; -).

Любая помощь приветствуется,

1 Ответ

0 голосов
/ 01 мая 2018

На самом деле проблема была в стиле CSS, где я установил непрозрачность 255 (как в дизайнере тем с прозрачностью). Его нужно было установить на значение от 0 до 1,0.

MyTextFiledStyle {
color: #000000; 
background-color: #ffffff;
text-align: left;
opacity: 1.0; /*NOT 255 */
font-family: "native:MainLight"; 

}

...