2013-10-09 1 views
0

Я использую TableView для отображения некоторых данных. Пример таблицы показано на рисунке:Get/Set ToggleButton state в TableView JavaFX2.2

Editable TableView

только элементы в 2-ом столбце редактируются. Третий столбец содержит ToggleButton, который в основном отображает TextField, когда нажата кнопка «Изменить».

Что я хочу, это переключить состояние соответствующего ToggleButton в следующую функцию обработчика событий (см. Комментарии в фрагменте кода ниже).

textField.setOnKeyReleased(new EventHandler<KeyEvent>() { 
      @Override 
      public void handle(KeyEvent t) { 
       if (t.getCode() == KeyCode.ENTER) { 
        commitEdit(textField.getText()); 
        //Toggle the state of Edit button here 
       } else if (t.getCode() == KeyCode.ESCAPE) { 
        cancelEdit(); 
        //Toggle the state of Edit button here 
       } 
      } 
     }); 

Я попробовал свой уровень лучше всего, чтобы получить соответствующий объект редактировать кнопку в выбранной строке, но ничего не помогло, и я не мог найти соответствующую статью.

Это что-то достижимое? Если да, то как это можно сделать.

ответ

0

Итак, правильно ли я понимаю, если кнопка isSelected вы хотите иметь возможность редактировать текстовое поле? Так почему бы не получить TextField и ToggleButton в вашем контроллере, приложите к вашей кнопке OnAction, а затем измените текстовое поле на редактируемый. Что-то вроде:

~ Контроллер:

@FXML 
private ToggleButton togglebutton; 

@FXML 
private TextField textfield; 

@FXML 
public void actionEditField(ActionEvent event) { 
    if (togglebutton.isSelected()) { 
     textfield.setEditable(true); 
     ... 
    } else { 
     ... 
     commitEdit(textfield.getText()); 
     textfield.setEditable(false); 
     ... 
    } 
} 

~ FXML:

<ToggleButton fx:id="togglebutton" alignment="CENTER" onAction="#actionEditField" text="Edit" /> 
Будет

эта помощь?

+0

Спасибо за ответ. Да, вы правильно поняли проблему. Однако эти кнопки редактирования создаются динамически для каждой строки. Они не созданы во время разработки, поэтому это решение не поможет. Подход, который я использовал для отображения кнопок в сетке, похож на эту статью http://java-buddy.blogspot.co.uk/2013/03/javafx-embed-button-in-tableview.html –

Смежные вопросы