powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / JavaFX TableView перенос строк в ячейке и стиль текста
5 сообщений из 5, страница 1 из 1
JavaFX TableView перенос строк в ячейке и стиль текста
    #39402437
nport
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все привет!
Подскажите пожалуйста, люди добрые.

Решил реализовать перенос строк в колонке TableView. Все переносится, при изм. ширины все масштабируется - одним словом песня.
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
c2.setCellValueFactory(cellData -> cellData.getValue().c2Property());
        c2.setCellFactory(param -> {
            TableCell<TableRow, String> cell = new TableCell<>();
            Text text = new Text();
            text.setStyle("");
            cell.setGraphic(text);
            cell.setPrefHeight(Control.USE_COMPUTED_SIZE);
            //text.wrappingWidthProperty().bind(cell.widthProperty());
            text.textProperty().bind(cell.itemProperty());
            text.wrappingWidthProperty().bind(c2.widthProperty());
            return cell;
        });



НО! После добавления переноса строк к колонке не могу изменить стиль текста в этой колонке + при выделении строки таблицы текст в этой колонке не изменяет свой стиль.
На скорость не влияет, но перфекционист внутри меня бунтует ...

Подскажите пожалуйста, как стиль изменить?

Прикрепляю сам JAR и файлы проекта.

Main.java
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
package sample;

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;

public class Main extends Application {

    @Override
    public void start(Stage primaryStage) throws Exception{
        FXMLLoader loader = new FXMLLoader(getClass().getResource("sample.fxml"));
        Parent root = (Parent)loader.load();
        Controller ctrl = loader.getController();
        primaryStage.setTitle("Hello World");
        primaryStage.setScene(new Scene(root));
        primaryStage.show();
        ctrl.fillTableWithData();
    }
    public static void main(String[] args) {
        launch(args);
    }
}



Controller.java
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
package sample;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Control;
import javafx.scene.control.TableCell;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.text.Text;
import java.net.URL;
import java.util.ResourceBundle;

public class Controller implements Initializable
{
    @FXML TableView testTable;
    @FXML TableColumn<TableRow,String> c1;
    @FXML TableColumn<TableRow,String> c2;
    private ObservableList<TableRow> data = FXCollections.observableArrayList();
    @Override
    public void initialize(URL location, ResourceBundle resources)
    {
        c1.setCellValueFactory(cellData -> cellData.getValue().c1Property());
        c2.setCellValueFactory(cellData -> cellData.getValue().c2Property());
        c2.setCellFactory(param -> {
            TableCell<TableRow, String> cell = new TableCell<>();
            Text text = new Text();
            text.setStyle("");
            cell.setGraphic(text);
            cell.setPrefHeight(Control.USE_COMPUTED_SIZE);
            //text.wrappingWidthProperty().bind(cell.widthProperty());
            text.textProperty().bind(cell.itemProperty());
            text.wrappingWidthProperty().bind(c2.widthProperty());
            return cell;
        });
    }
    public void fillTableWithData()
    {
        for(int i=0; i<=20; i++)
        {
            data.add(new TableRow("Текст, который не будет переносится на следующую строку","Текст, который будет переносится на следующую строку и не меняет свой стиль при выделении"));
            testTable.setItems(data);
        }
    }
}



TableRow.java
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
package sample;

import javafx.beans.property.SimpleStringProperty;

/**
 * Created by nport on 010 10.02.17.
 */
public class TableRow
{
    SimpleStringProperty c1 = new SimpleStringProperty();
    SimpleStringProperty c2 = new SimpleStringProperty();
    TableRow(String p1, String p2)
    {
        this.c1 = new SimpleStringProperty(p1);
        this.c2 = new SimpleStringProperty(p2);
    }
    public String getC1() {
        return c1.get();
    }

    public SimpleStringProperty c1Property() {
        return c1;
    }

    public void setC1(String c1) {
        this.c1.set(c1);
    }

    public String getC2() {
        return c2.get();
    }

    public SimpleStringProperty c2Property() {
        return c2;
    }

    public void setC2(String c2) {
        this.c2.set(c2);
    }
}



sample.fxml
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.control.TableColumn?>
<?import javafx.scene.control.TableView?>
<?import javafx.scene.layout.BorderPane?>

<BorderPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1" fx:controller="sample.Controller">
   <center>
      <TableView fx:id="testTable" prefHeight="200.0" prefWidth="200.0" BorderPane.alignment="CENTER">
        <columns>
          <TableColumn fx:id="c1" prefWidth="75.0" text="C1" />
          <TableColumn fx:id="c2" prefWidth="75.0" text="C2" />
        </columns>
         <columnResizePolicy>
            <TableView fx:constant="CONSTRAINED_RESIZE_POLICY" />
         </columnResizePolicy>
      </TableView>
   </center>
</BorderPane>
...
Рейтинг: 0 / 0
JavaFX TableView перенос строк в ячейке и стиль текста
    #39405239
nport
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приложу еще скрин приложения. Текст в колонке C2 не реагирует на выделение строки. Подскажите пожалуйста, как заставить реагировать?

...
Рейтинг: 0 / 0
JavaFX TableView перенос строк в ячейке и стиль текста
    #39405294
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nport,
ну дак смотри в коде чем обе колонки отличаются. В одной инвертируется, а во второй нет.
...
Рейтинг: 0 / 0
JavaFX TableView перенос строк в ячейке и стиль текста
    #39405798
nport
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123nport,
ну дак смотри в коде чем обе колонки отличаются. В одной инвертируется, а во второй нет.
Дело в том, что в колонке С2 "переопределяю" CellFactory, в котором реализую перенос строки.
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
c2.setCellFactory(param -> {
            TableCell<TableRow, String> cell = new TableCell<>();
            Text text = new Text();
           cell.setGraphic(text);
            cell.setPrefHeight(Control.USE_COMPUTED_SIZE);
            text.textProperty().bind(cell.itemProperty());
            text.wrappingWidthProperty().bind(c2.widthProperty());
            return cell;
        });



Похоже, что setGraphic(text) убирает реакцию колонки на выделение, а без него не переносится...
...
Рейтинг: 0 / 0
JavaFX TableView перенос строк в ячейке и стиль текста
    #39405820
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nport,
значит надо
if selectable {setTextColor(белый)} но я бы забил.
Выйдет какой нибудь 8.3 и автоматом заработает перенос текста.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / JavaFX TableView перенос строк в ячейке и стиль текста
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]