В InteractionDialog
шахте есть TextField
. Я установил стиль TextField
в UIID, определенный в CSS. Фон TextField
отображается, но не текст внутри него
хотя
System.err.println("The textfield contains " + nameTf.getText());
печатает ожидаемый текст, а цвет переднего плана равен 0, как и ожидалось. Текст отображается только когда я нажимаю внутри TextField, но как только я нажимаю снаружи, он исчезает, как показано ниже:
На консоли не отображается нарушение 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
?
Обратите внимание: на снимках экрана скрываются некоторые элементы, поскольку приложение имеет совершенно секретный уровень АНБ; -).
Любая помощь приветствуется,