내 목표는 JTable 노드를 JTree 노드로 사용하고 두 번 클릭하여 JTable의 셀을 편집 할 수있게하는 것입니다. 렌더링이 잘 작동하지만 (Jtable as a Jtree Node) 테이블의 단일 셀을 편집하는 방법을 알지 못합니다. 편집 가능한 트리를 설정하면 더블 클릭을 사용하여 노드를 편집 할 수 있지만 사용자가 렌더링에 사용하는 숫자 앞에 "%"를 유지하는 것을 꺼리는 것처럼 보일 수 있기 때문에 셀을 직접 편집하려고합니다. 트리가 편집 가능하도록 설정되지 않은 경우 두 번 클릭하면 아무 것도 수행되지 않습니다. 이 작업을 수행하는 쉬운 방법이 있습니까?JTable 셀을 JTree 노드로 편집
public class TreeWithCellRenderer {
static class MyCellRenderer implements TreeCellRenderer {
@Override
public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded,
boolean leaf, int row, boolean hasFocus) {
String command = (String) ((DefaultMutableTreeNode) value).getUserObject();
final String[] params = command.split("%");
JTable table = new JTable();
table.setModel(new DefaultTableModel() {
private static final long serialVersionUID = 1L;
@Override
public int getRowCount() {
return 1;
}
@Override
public int getColumnCount() {
return params.length;
}
@Override
public Object getValueAt(int row, int column) {
return params[column];
}
});
return table;
}
}
private static void createAndShowGUI() {
// Create and set up the window.
JFrame frame = new JFrame("JTreeTutorial");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// Tree components
DefaultMutableTreeNode root = new DefaultMutableTreeNode("root");
DefaultMutableTreeNode cmd1 = new DefaultMutableTreeNode("name %1");
DefaultMutableTreeNode cmd2 = new DefaultMutableTreeNode("name %1 %2");
root.add(cmd1);
root.add(cmd2);
JTree jTree = new JTree(root);
//Don't like it too much, as it makes you edit the whole node, not cells
//jTree.setEditable(true);
jTree.setCellRenderer(new MyCellRenderer());
JScrollPane scroolPane = new JScrollPane(jTree);
frame.add(scroolPane);
// Display the window.
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
createAndShowGUI();
}
}
감사합니다 : 그것은 수도
은 다음과 같습니다. 나는 http://stackoverflow.com/questions/12642792/easy-and-fast-jtree-cell-editor에서 예제를 따라 가려고했으나 전체 행 인 트리 셀을 편집 할 수있게하고 편집하고 싶다. 이 행에서 하나의 셀만. 예제를 가르쳐 주시겠습니까? 나는 Swing에서 꽤 초보자입니다. – dalvarezmartinez1