Technology
 

JavaFX Questions and Answers

Материал из JavaFX

Главная | Описание языка | API | Примеры | Инструменты Разработки | Новости | Ресурсы | Форум


Задайте интересующий вас вопрос по языку JavaFX Script


Содержание

[править] Вопросы по языку JavaFX Script

[править] Задайте здесь свой вопрос

Вопрос: Добавьте свой вопрос к остальным
Ответ:

[править] Как написать простую форму входа

Вопрос: Хочу написать простую форму входа, после регистрации в которой пользователь попадает на одну из страниц. Сраница соответствует выбраному имени. Как реализовать запуск нужной формы из формы входа, с её последующим закрытием?
Ответ: Вот как раз на форуме подняли похожий вопрос: Login.fx и Main.fx. Посмотрите, это то что вам нужно или нет.

[править] Различия между компилируемым и интерпретируемым JavaFX

Вопрос: Какие языковые конструкции допустимы в компилируемой версии, но недопустимы в интерпретируемой?
Ответ: Компилируемая и интерпретируемая версии языка JavaFX Script синтаксически отличаются друг от друга. Так в интерпретирумой версии есть функции и операции ( function and operation), тогда как в компилирумой все это заменено на функции. Если в интерпретируемой версии инициализация атрибутов и определение методов происходило снаружи определения класса, то теперь все определяется внутри объявления класса.
Смотри также: Переход с интерпретируемой на компилируемую версию


Вопрос: Каких jar-файлов будет достаточно для работы с компилируемой версией, а каких - для работы с интерпретируемой?
Библиотеки, необходмые для интерпретируемой версии
javafxrt.jar
Filters.jar
swing-layout.jar
Библиотеки, необходмые для компилируемой версии
javafxc.jar
javafxrt.jar
Scenario.jar

[править] Использование Bean компонентов

Вопрос: Можно ли использовать свой компонент (bean) в JavaFX?
Ответ: Вот пример использование JCalendar bean-а в языке JavaFX Script
Пример использования Картинка
import javafx.ui.*;
import javax.swing.*;
import com.toedter.calendar.*;

class JavaBean extends Widget{
    attribute bean: JComponent;
    protected function createComponent():JComponent{
        return bean;
    }
}

Frame{
    title: "Calendar"
    content: JavaBean{
        bean: new JCalendar()
    }
    visible: true
}
Изображение:Calendar_sample.png

[править] Как объявить статический (static) атрибут или функцию/операцию в JavaFx классе?

Вопрос: Как объявить статический (static) атрибут или функцию/операцию в JavaFx классе? Типа static attribute ... Такое слово зарезервировано, но в спецификации не нашел возможность его применения.
Ответ: Объявлять статические атрибуты/функции можно только в компилируемой версии языка JavaFX Script (см установка компилятора). При этом слово static надо вставлять в начало объявления атрибута или функции.
Пример:
import java.lang.System;

class Function{
    static attribute DEBUG:Boolean = false;
    static function add(a:Number,b:Number):Number{
        return a + b;
    }
}

System.out.println("3 + 4 = {Function.add(3,4)}");

[править] Как в обычном интерфейсе сделать "размытый" шрифт?

Вопрос: Как в обычном интерфейсе сделать "размытый" шрифт? Нечто вроде antialiased: true
Ответ: Вот примерный код. Он сейчас не работает из за ошибки JFXC-689
import javafx.ui.*;
import javafx.ui.canvas.*;

Frame{
    title: "Smooth Text"
    content:  Canvas{
        content: View{
            antialiasText: true
            content: Label{ text: "Hello World!" }
        }
    }    
    visible: true
}

[править] Работа с интерфейсом во время выполнения скрипта

Вопрос: Существует ли в JavaFX возможность динамической работы с созданным интерфейсом пользователя? К примеру, добавление новых пунктов меню или скрытие/отображение определённых элементов контекста, во время выполнения скрипта?
Ответ: Все это можно сделать, используя подходящим образом оператор bind. Например, можно хранить элементы menu в массиве, а массив связать с основным menu. Тогда добавление/удаление элементов массива будет сказываться и на основном menu приложения:
Пример использования Картинка
import javafx.ui.*;

var menus:AbstractMenuItem[];
var num = 1;

insert MenuItem {
    text: "Insert New Menu"
    action: function(){
        insert MenuItem{ text: "Menu {num}" } into menus;
        num = num + 1;
    }
} into menus;

Frame{
    title: "Menu Example"
    menubar: MenuBar{
        menus: Menu{ text: "Main Menu" items: bind menus}
    }
    visible: true    
}
Menu Example
Скрывать/отображать определённые элементы контекста можно, связав с аттрибутом visible элемента некоторую логическую переменную
 var flag = true;
 Button{ text: "Click Me" visible: bind flag }  
Следующий пример показывает, как можно связать массив строк с элементами списка. От первого примера он отличается только тем, что в массиве будут хранится строки, а не ячейки списка:
Пример использования Картинка
import javafx.ui.*;

var animals:String[] = [ "dog", "cat" ];
var animal:String;

Frame{
    title: "Animals"
    content: BorderPanel{
        top: TextField{ text: bind animal with inverse}
        center: ListBox {
            cells: bind for(str in animals){
                ListCell{ text: str}
            }
        }        
        bottom: Button{
            text: "Add Animal"
            action: function(){ insert animal into animals; }
        }
    }
    visible: true
} 
Animals Example

[править] Перечислимые типы

Вопрос: Поддерживает ли язык JavaFX Script перечислимые типы, такие как Enumarations в Java?
Ответ: На текущий момент язык JavaFX Script не поддерживает перечислимые типы. Зато в компилируемой версии можно свободно использовать enumerations, написанные на языке Java.
Например:
Day.java
 public enum Day {
   Sunday, Monday,  Tuesday, Wednesday, Thursday, Friday, Saturday    
 }
Example.fx
   import java.lang.System;

   var day = Day.Friday;
   System.out.println("Day is : {day}");

[править] Вопросы, относящиеся к Wiki серверу

[править] Задайте здесь свой вопрос

[править] Wiki Skin

Вопрос: Как настроить Skin для Wiki
Ответ: Чтобы настроить Skin, надо сначала зарегестрироваться на Wiki сервере, потом перейти по ссылке "имя пользователя -> My Preferences", перейти на вкладку Skin и выбрать из того, что там есть.
MonoBook Skin Quartz Sapphire Skin
MonoBook Skin Quartz Sapphire Skin