Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Редактирование ячейки в TableView, после прокрутки ломаемся 
:(
    Опции темы
Rusico
Дата 16.3.2016, 18:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 144
Регистрация: 17.5.2004

Репутация: нет
Всего: нет



Доброго времени суток.

Необходимо при добавлении в TableView новой строки включить режим редактирования в ней. Всё прекрасно работает до тех пор, пока хотя бы раз не воспользуешься прокуруткой. Есть у кого-нибудь идеи как это исправить? Ниже привожу код. Заранее благодарен за ответы.

Код

import javafx.application.Application;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.control.cell.TextFieldTableCell;
import javafx.scene.layout.Priority;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class Test extends Application {
  
  public static void main(String[] args) {
    launch(args);
  }
  
  @Override
  public void start(Stage primaryStage) {
    TableView<MyRow> table = new TableView();
    TableColumn<MyRow, String> name = new TableColumn<>("name");
    name.setCellValueFactory(new PropertyValueFactory("name"));
    name.setCellFactory(TextFieldTableCell.forTableColumn());
    name.setEditable(true);
    table.setEditable(true);
    table.getColumns().add(name);
    VBox.setVgrow(table, Priority.ALWAYS);
    
    for(int i=0;i<100;i++)
      table.getItems().add(new MyRow(i+""+i+""+i));
    
    Button add = new Button("+");
    add.setOnAction(e -> {
      table.getItems().add(0, new MyRow("new"));
      table.edit(0, name);
    });
    
    primaryStage.setScene(new Scene(new VBox(5, add, table), 300, 250));
    primaryStage.show();
  }

  public class MyRow {
    private final StringProperty name = new SimpleStringProperty();
    
    public MyRow(String name) {
      this.name.setValue(name);
    }
    public String getName() {
      return name.get();
    }

    public void setName(String value) {
      name.set(value);
    }

    public StringProperty nameProperty() {
      return name;
    }
  }
}

PM MAIL   Вверх
samssrus
Дата 17.3.2016, 11:23 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











...странно, но у меня под Ubuntu с Java™ SE Runtime Environment (build 1.8.0_74-b02) нормально работает. Строки добавляются. После добавления редактируются. Прокрутка, добавление, редактирование в произвольных последовательностях - все ОК.

жутко давно не работал с java, но по старой памяти на ум приходит вот что:
- класс MyRow должен либо наследоваться от специализированного класса модели (Data Model), либо быть чем-то вроде массива.

посмотрите вот здесь http://docs.oracle.com/javafx/2/ui_controls/table-view.htm на ObservableList<> (должно выйти что-то вроде ObservableList<MyRow>).


Этот ответ добавлен с нового Винграда - http://vingrad.com
  Вверх
Rusico
Дата 18.3.2016, 13:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 144
Регистрация: 17.5.2004

Репутация: нет
Всего: нет



принципиальной разницы нет, можно и так 

Код

ObservableList<MyRow> data = FXCollections.observableArrayList();
for(int i=0;i<100;i++)
  data.add(new MyRow(i+""+i+""+i));
table.setItems(data);


результат тот же.

Добавлено через 5 минут и 31 секунду
у меня Linuxmint java8 b java9 - глюк везде одинаковый

Добавлено через 9 минут и 26 секунд
Эксперимент: ставлю java 1.8.0_74-b02 ))
PM MAIL   Вверх
Rusico
Дата 18.3.2016, 13:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 144
Регистрация: 17.5.2004

Репутация: нет
Всего: нет



Вот
java -version
java version "1.8.0_74"
Java™ SE Runtime Environment (build 1.8.0_74-b02)
Java HotSpot™ 64-Bit Server VM (build 25.74-b02, mixed mode)

но результат тот же(
PM MAIL   Вверх
dreindeimos
Дата 18.3.2016, 14:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 4.6.2015

Репутация: нет
Всего: нет



java -version
java version "1.8.0_74"
Java™ SE Runtime Environment (build 1.8.0_74-b02)
Java HotSpot™ 64-Bit Server VM (build 25.74-b02, mixed mode)
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   jk1
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема »


 




[ Время генерации скрипта: 0.1089 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.