컨텍스트 메뉴를 tableview에 추가하고 싶습니다. 특히 마우스 오른쪽 버튼을 클릭하여 테이블 행에 컨텍스트 메뉴를 표시하려고합니다.TableView의 컨텍스트 메뉴 JAVAFX 2.1
내가 코드 위
final EventHandler click = new EventHandler() {
public void handle(MouseEvent t) {
}
@Override
public void handle(Event arg0) {
}
};
final Context menu = new ContextMenu();
MenuItem item = new MenuItem("Add Image");
item.setOnAction(new EventHandler() {
public void handle(ActionEvent t)
{
}
@Override
public void handle(Event arg0)
{
//some code here
}});
menu.getItems().addAll(item);
EditingCell cellFactory = new EditingCell(click,menu);
TableColumn col = new TableColumn("column1");
col.setCellFactory(cellFactory);
자바 FX 2.0에서 제대로 작동이 코드를했는데, 내가 마우스 오른쪽 버튼을 클릭의 상황에 맞는 메뉴를 얻고, 나는 자바 FX 2.1 컨텍스트 메뉴 나던 작품에 내 코드를 어떻게 이제까지 실행할 때 .
내가 showingProperty() 메소드를 사용하여 상황에 맞는 메뉴의 표시 속성을 얻기 위해 노력하고 자바 FX에서 자바 FX 2.1에서 false를 반환하고 진정한 2.0 내가 여기 내 사용자 지정 cellfactory 클래스를 만드는 시도하고또한 내 코드입니다 (I
import javafx.event.Event;
import javafx.event.EventHandler;
import javafx.scene.control.*;
import javafx.scene.input.KeyCode;
import javafx.scene.input.KeyEvent;
class TextFieldTreeCellImpl extends TableCell<String,String> {
private TextField textField;
private ContextMenu addMenu = new ContextMenu();
public TextFieldTreeCellImpl() {
MenuItem addMenuItem = new MenuItem("Add Employee");
addMenu.getItems().add(addMenuItem);
addMenuItem.setOnAction(new EventHandler() {
public void handle(Event t) {
}
});
setContextMenu(addMenu);
}
@Override
public void startEdit() {
super.startEdit();
if (textField == null) {
createTextField();
}
setText(null);
setGraphic(textField);
textField.selectAll();
}
@Override
public void cancelEdit() {
super.cancelEdit();
setText((String) getItem());
//setGraphic(getTableCell().getGraphic());
}
@Override
public void updateItem(String item, boolean empty) {
super.updateItem(item, empty);
if (empty) {
setText(null);
setGraphic(null);
} else {
if (isEditing()) {
if (textField != null) {
textField.setText(getString());
}
setText(null);
setGraphic(textField);
} else {
setText(getString());
//setGraphic(getTreeItem().getGraphic());
}
}
}
private void createTextField() {
textField = new TextField(getString());
textField.setOnKeyReleased(new EventHandler<KeyEvent>() {
@Override
public void handle(KeyEvent t) {
if (t.getCode() == KeyCode.ENTER) {
commitEdit(textField.getText());
} else if (t.getCode() == KeyCode.ESCAPE) {
cancelEdit();
}
}
});
}
private String getString() {
return getItem() == null ? "" : getItem().toString();
}
}
) 공식 자바 FX 트 리뷰 컨텍스트 메뉴의 예에서했다 나는대로이 사용자 정의 cellfactory을 추가 : 아직도 그 하시다입니다
final Callback<TableColumn, TableCell> cellFactory =
new Callback<TableColumn, TableCell>() {
public TableCell call(TableColumn p) {
return new TextFieldTreeCellImpl();
}
};
col.setCellFactory(cellFactory);
내가 힘든 시간을 보내고 있어요, 자바 FX 2.0의 벌금을 rking하지만 자바 FX 2.1
이 제발 도와주세요 ...
이 자바 FX 2.1의 버그에서 상황에 맞는 메뉴를 보였다 어떻게? – Deepak