Как не показывать контекстное меню на пустом табличке в Javafx?JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Как не показывать контекстное меню на пустом табличке в Javafx?

Сообщение Anonymous »

У меня есть таблица, и мне нужно добавить контекстное меню для рядов. Проблема в том, что контекстное меню показано также для пустых рядов. Чтобы исправить его, я удаляю и добавляю контекстное меню, используя слушатель на пустое свойство. Но с учетом того, что виртуальные строки обновляются очень часто, я не уверен, что это эффективное решение. < /P>
Это мой код: < /p>

Код: Выделить всё

public class NewMain1 extends Application {

public static class Person {
private final StringProperty firstName;
private final StringProperty lastName;

public Person(String firstName, String lastName) {
this.firstName = new SimpleStringProperty(firstName);
this.lastName = new SimpleStringProperty(lastName);
}

public StringProperty firstNameProperty() { return firstName; }
public StringProperty lastNameProperty() { return lastName; }
}

@Override
public void start(Stage primaryStage) {
TableView
 tableView = new TableView();
tableView.setEditable(true);

TableColumn firstNameCol = new TableColumn("First Name");
firstNameCol.setCellValueFactory(cellData -> cellData.getValue().firstNameProperty());
firstNameCol.setCellFactory(TextFieldTableCell.forTableColumn());

TableColumn lastNameCol = new TableColumn("Last Name");
lastNameCol.setCellValueFactory(cellData -> cellData.getValue().lastNameProperty());

tableView.getColumns().addAll(firstNameCol, lastNameCol);

ObservableList data = FXCollections.observableArrayList(
new Person("John", "Smith"),
new Person("Emily", "Johnson"),
new Person("Michael", "Williams"),
new Person("Sarah", "Brown")
);
tableView.setItems(data);

tableView.setRowFactory(tv -> {
TableRow row = new TableRow();
var contextMenu = new ContextMenu(new MenuItem("Show Salary"));
row.emptyProperty().addListener((ov, oldV, newV) -> {
if (newV) {
row.setContextMenu(null);
} else {
row.setContextMenu(contextMenu);
}
});
return row;
});

VBox root = new VBox(tableView);
Scene scene = new Scene(root, 400, 300);
primaryStage.setTitle("Editable Names Table");
primaryStage.setScene(scene);
primaryStage.show();
}

public static void main(String[] args) {
launch(args);
}
}
Может ли кто -нибудь сказать, есть ли лучшее решение не показывать контекстное меню для пустых рядов?


Подробнее здесь: https://stackoverflow.com/questions/795 ... -in-javafx
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как не показывать контекстное меню на пустом табличке в Javafx?
    Anonymous » » в форуме JAVA
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • Как не показывать контекстное меню на пустом табличке в Javafx?
    Anonymous » » в форуме JAVA
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous
  • Intellij javafx module info.java: модуль считывает пакет «javafx.fxml» как из "javafx.fxml ', так и" javafx.fxml'
    Anonymous » » в форуме JAVA
    0 Ответы
    48 Просмотры
    Последнее сообщение Anonymous
  • Строка меню UIMenuBuilder и контекстное меню
    Anonymous » » в форуме IOS
    0 Ответы
    54 Просмотры
    Последнее сообщение Anonymous
  • Интеграция в контекстное меню Windows Shell для нескольких файлов с выбранным отображением меню
    Гость » » в форуме C#
    0 Ответы
    16 Просмотры
    Последнее сообщение Гость

Вернуться в «JAVA»