JavaFX Фильтр таблицы

203
01 декабря 2017, 05:23

Проект JavaFX2. Как можно реализовать фильтр по нажатию на название колонки и соотвественно чтобы по значениях этой колонки оно фильтровало? Подскажите пожалуйста

FilteredList по предикату не подходит, большой объем данных и фильтрация будет осуществляться по SQL запросу.

Или подскажите как подключить dependency отсюда github в свой javafx2(не maven) проект, у меня нет файла pom.xml

Answer 1

Пример перехода на Maven (весь переход заключается в небольшом изменении структуры каталогов).

Обычный JavaFX проект:

Закрыть среду, зайти в проводник (можно и через среду, но она автоматически меняет указанные пакеты в классах. И что бы потом их не исправлять обратно, проще сделать через проводник).

Недостающие каталоги создать:

  • src/main/java - Каталог исходных кодов. Обязателен. В папку java полностью перенесите папку org (кроме fxml).
  • src/main/resources - Каталог ресурсов. В целом не обязателен, но при javaFX в нем принято хранить fxml, css, image и прочие файлы. В папку resources перенесите папку fxml.
  • src/test/java - Каталог исходных кодов тестов. Не обязателен.
  • src/test/resources - Каталог ресурсов тестов. Не обязателен.

В папку Project положить pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.company</groupId>
<artifactId>project</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>Project</name>
<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <mainClass>org.company.Main</mainClass>
</properties>
<dependencies>
    <!-- Сюда вставлять зависимости -->
</dependencies>
<build>
    <plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <version>1.2.1</version>
            <executions>
                <execution>
                    <id>unpack-dependencies</id>
                    <phase>package</phase>
                    <goals>
                        <goal>exec</goal>
                    </goals>
                    <configuration>
                        <executable>${java.home}/../bin/javapackager</executable>
                        <arguments>
                            <argument>-createjar</argument>
                            <argument>-nocss2bin</argument>
                            <argument>-appclass</argument>
                            <argument>${mainClass}</argument>
                            <argument>-srcdir</argument>
                            <argument>${project.build.directory}/classes</argument>
                            <argument>-outdir</argument>
                            <argument>${project.build.directory}</argument>
                            <argument>-outfile</argument>
                            <argument>${project.build.finalName}.jar</argument>
                        </arguments>
                    </configuration>
                </execution>
                <execution>
                    <id>default-cli</id>
                    <goals>
                        <goal>exec</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.1</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
                <compilerArguments>
                    <bootclasspath>${sun.boot.class.path}${path.separator}${java.home}/lib/jfxrt.jar</bootclasspath>
                </compilerArguments>
            </configuration>
        </plugin>
    </plugins>
</build>

Переход закончен. Должно получиться что то вроде этого:

Дополнительно:

Некоторые директории (на изображении) помечены цветами или иконками - это знак того, что среда распознала этот проект как maven project. Сверить/вспомнить (или изменить визуальную подсказку по директории) можно в File -> Project Structure -> Modules: Source: Mark as

Если среда сразу не распознала проект, тогда: View->Tool Windows->Maven Projects (или эта же вкладка с правой стороны) -> Reimport All Maven Projects (две большие стрелки - под тип значка "обновить")

могут появиться ошибки java.lang.NullPointerException: Location is required. В этом случае проверьте пути до fxml файлов. Например в моем примере он выглядят так (где первый / это каталог resources):

Parent root = FXMLLoader.load(getClass().getResource("/fxml/sample.fxml"));

При добавлении зависимостей среда покажет всплывающие сообщение c выбором (Autoimport disable, Autoimport enable). Выбирайте enable (автоматическая подгрузка зависимостей указанных в pom файле)

READ ALSO
Выделение дробной части из double

Выделение дробной части из double

Я сделал по топорному,

156
Как правильно обратиться к методу в Java?

Как правильно обратиться к методу в Java?

Выбивает ошибку что метод не существует

191
Отправка email (java)

Отправка email (java)

Я пытаюсь отправить email с помощью следующего кода:

221
Как освободить MediaPlayer от ресурсов?

Как освободить MediaPlayer от ресурсов?

Открываю новый файл по клику на кнопке:

188