Реализация Runnable при использовании Java Swing

Для Scala вы можете использовать библиотеку, которую я создал: https://github.com/kypeli/sversion

Version("1.2") > Version("1.1")       // true
Version("1.2.1") > Version("1.1.2")   // true
Version("1.1.1") == Version("1.1.1")  // true
Version("1.1.1") > Version("1.1")     // true
Version("1.1.0") == Version("1.1")    // true
Version("1.1-RC2") > Version("1.1-RC1")  // true
Version("1.1-RC1") > Version("1.1")   // true

3
задан Andrew Thompson 18 January 2019 в 03:22
поделиться

1 ответ

Чем отличаются эти два пути?

На самом деле они не достигают одного и того же по-разному.

Первый - более «традиционный» подход, а второй - более «современный» или сокращенный, который использует приветствуемое введение анонимных классов в язык.

]

И есть ли более предпочтительный выбор?

Это вопрос мнения, для моих денег предпочтение отдается второму, потому что оно не создает в противном случае ненужного соответствия Runnable для класса, он также делегирует ответственность за настройку пользовательского интерфейса (правильно) на вызывающей стороне и мешает коду делать предположения (т. Е. Вы можете просто сконструировать фрейм в любое время и запустить его ... просто сделайте это из в контексте темы диспетчеризации событий).

Также, в качестве предпочтения, вы не должны расширяться напрямую из JFrame, так как вы фактически не добавляете новую функциональность в класс, вместо этого, как это делается во втором примере, просто создайте экземпляр, когда вам нужно и создайте свой UI поверх него

Вы также можете взглянуть на Concurrency in Swing для более подробной информации о том, почему вы должны использовать EventQueue.invokeLater для запуска вашего UI

]
0
ответ дан MadProgrammer 18 January 2019 в 03:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: