Метод setText () JLabel называется потокобезопасным, но обеспечивает ли он видимость

глядя в исходный код JLabel. У меня есть проблема видимости текстового поля. Я извлек существенную часть, чтобы установить текстовое поле и получить oldValue. На мой взгляд, если текстовое поле String не объявлено изменчивым, видимость находится под угрозой, поскольку firePropertyChange может не видеть, как oldValue извлекается из текстового поля, сохраненного другим потоком раньше. Я прав, или я что-то упускаю? Обратите внимание, что это не обсуждение SwingUtility.

public class JLabel extends JComponent implements SwingConstants, Accessible {
    ...

    private String text = "";        //"" rather than null, for BeanBox

    ...

    public void setText(String text) {

        String oldAccessibleName = null;
        if (accessibleContext != null) {
            oldAccessibleName = accessibleContext.getAccessibleName();
        }

        String oldValue = this.text;
        this.text = text;
        firePropertyChange("text", oldValue, text);

    ...

Спасибо заранее.

0
nl ja de
Обратите внимание, что это не значит обсуждать SwingUtility. , правильно, конечно, я согласился, для лучшей помощи скорее опубликуйте SSCCE короткий, исполняемый, компилируемый, примерно JFrame только с одним JLabel
добавлено автор mKorbel, источник
Я не вижу ничего в документации JDK7, которая говорит о том, что JTextPane # setText является потокобезопасным
добавлено автор Robin, источник
Метод JLabel setText() называется потокобезопасным , кто/что говорит такая бессмыслица?
добавлено автор kleopatra, источник
О, извините, у JTextPane, похоже, есть метод threadte setText (), но у него нет этого текстового поля, например, JLabel. Но в целом фрагмент кода выше не обеспечивает видимость для нескольких потоков, не так ли? Только это ответит на мой вопрос.
добавлено автор user2050516, источник
Ну, JTextPane наследует setText от JEditorPane. Для JDK6 в документах говорится, что это поточно-безопасный. Для JDK 7 говорится, что это не так.
добавлено автор barjak, источник

1 ответы

Основываясь на том, что вы написали, нет, это не обеспечило бы видимость (хотя я не вижу, как объявление чего-либо изменчивого поможет). В этой ошибке указано, что ряд методов в документации JDK 6 ложно заявляют, что они потокобезопасны (см. внизу страницы), JEditorPane.setText является одним из них (следовательно, причина, по которой этот оператор не содержится в документации JDK 7).

5
добавлено
+1 для выкапывания ссылки на ошибку :-)
добавлено автор kleopatra, источник
pro.jvm
pro.jvm
3 503 участник(ов)

Сообщество разработчиков Java Scala Kotlin Groovy Clojure Чат для нач-их: @javastart Наш сайт: projvm.com projvm.ru Наш канал: @proJVM Вакансии: @jvmjobs Конфы: @jvmconf

Java & Co
Java & Co
2 370 участник(ов)

Можно обсуждать с матом и без всё, что касается жабы, вплоть до холиваров. НЕ ИМЕЕТ ОТНОШЕНИЯ К САЙТУ JAVARUSH.RU ПРАВИЛА - https://t.me/javarush/75723 Вакансии сюда - https://telegram.me/joinchat/B7IzvUCnfo6d8t3yIxKguQ По вопросам - @thedude

learn.java
learn.java
1 888 участник(ов)

Чат для начинающих и не только Статистика: https://combot.org/chat/-1001083535868 Основной чат - @jvmchat

Java Underground
Java Underground
169 участник(ов)

https://vk.com/javatutorial

Javanese Questions
Javanese Questions
109 участник(ов)

Чат предназначен для обмена знаниями строго в формате в вопрос-ответ. Тема — Java, Kotlin и Android. Вопрос должен быть предварительно прогуглен, понятно и грамотно сформулирован, помечен хэштегами. Ответ — тем более. Куски кода размером в несколько строк можно писать прямо здесь, для больших кусков кода стоит использовать http://gist.github.com/, http://pastebin.com/, https://codeshare.io/ или любой аналогичный сервис. В некоторых случаях можно прикреплять скриншоты. Стикеры и гифки запрещены. Дополнять и уточнять вопросы и ответы — редактированием исходного сообщения. Обсуждения должны приводить к редактированию вопроса/ответа и удаляться. По хештегам можно искать существующие вопросы и овтеты: #вопрос #ответ #git #generics #java #server #awt #javafx #swing #kotlin #anko #tornadofx #ktor #android #recyclerView #performance #arch #network #permissions #storage #async