Как я расширяю scala.swing?

Более универсальный ответ для универсального вопроса "Десятичное число по сравнению с Дважды?": Десятичное число для денежных вычислений для сохранения точности, Двойной для научных вычислений, которые не становятся затронутыми небольшими различиями. С тех пор Дважды тип, который является собственным к ЦП (внутреннее представление хранится в основа 2 ), вычисления, сделанные с Двойным, выполняют лучше тогда Десятичное число (который представлен в основа 10 внутренне).

8
задан Community 23 May 2017 в 09:57
поделиться

5 ответов

Вы можете импортировать все библиотеки java прямо в свой код scala.

Попробуйте раздел учебника по scala: «взаимодействие с Java».

Java в scala

0
ответ дан 6 December 2019 в 00:58
поделиться

Возможно, вы сможете использовать источник scala.swing в качестве ссылки, например, http://lampsvn.epfl.ch/svn-repos/scala/ scala / trunk / src / swing / scala / swing / Button.scala

0
ответ дан 6 December 2019 в 00:58
поделиться

Какие функции scala вы пытаетесь использовать с ним? Это может помочь придумать ответ. Т.е. - что вы пытаетесь с этим сделать, потенциально на Java? Затем мы можем попытаться придумать более приятный способ сделать это с помощью Scala и / или создать оболочку для классов, которая сделает то, что вы пытаетесь сделать, еще проще.

0
ответ дан 6 December 2019 в 00:58
поделиться

Вы могли бы рассмотреть механизм «неявных преобразований» Scala. Вы можете сделать что-то вроде этого:

implicit def enrichJInternalFrame(ji : JInternalFrame) = 
               new RichJInternalFrame(ji)

Теперь вы определяете класс RichJInternalFrame (), который принимает JInternalFrame и имеет любые методы, с помощью которых вы хотите расширить JInternalFrame, например:

class RichJInternalFrame(wrapped : JInternalFrame) {
   def showThis = {
     wrapped.show()
   }
}

Это создает новый метод showThis, который просто вызывает показать в JInternalFrame. Теперь вы можете вызвать этот метод в JInternalFrame:

val jif = new JInternalFrame()
println(jif.showThis);

Scala автоматически преобразует jif в RichJInternalFrame и позволит вам вызывать для него этот метод.

3
ответ дан 6 December 2019 в 00:58
поделиться

В JRuby вы можете смешивать одну (или несколько) черт с JDesktopPane или JInternalFrame вместо их расширения. Таким образом, вам не нужно будет оборачивать классы, а просто использовать существующие объекты. Насколько мне известно, это невозможно с чертами Scala.

К счастью, есть решение, почти такое же гибкое, как у Ruby: лексически открытые классы .

0
ответ дан 6 December 2019 в 00:58
поделиться
Другие вопросы по тегам:

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