2016-11-05 4 views
0

문제가 발생하여 버튼을 클릭 할 수 없습니다. 그들은 버튼 디자인이있는 텍스트 필드처럼 행동합니다.jButton을 jTable에서 클릭 할 수 없습니다.

Main :

tableModStudents = (DefaultTableModel) studentsTable.getModel(); 
    studentsTable.getColumn(studentsTable.getColumnName(8)) 
       .setCellRenderer(new JButtonRenderer()); 
    studentsTable.getColumn(studentsTable.getColumnName(8)) 
       .setCellEditor(new JButtonEditor()); 

CellRenderer :

public class JButtonRenderer implements TableCellRenderer {  
    private JButton button = new JButton(); 

    public Component getTableCellRendererComponent(JTable table, 
      Object buttonText, boolean isSelected, boolean hasFocus, 
      int row, int column) { 
     table.setShowGrid(true); 
     button.setText("Details"); 
     button.setToolTipText(buttonText.toString()); 
     return button; 
    } 
} 

CellEditor :

public class JButtonEditor extends AbstractCellEditor implements TableCellEditor { 

    private JButton button; 
    private String txt; 

    public JButtonEditor() { 
     super(); 
     button = new JButton(); 
     button.setOpaque(true); 
     button.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent ae) { 
       System.out.println("Button gedrückt!"); 
      } 
     }); 
    } 

    public Object getCellEditorValue() { 
     return null; 
    } 

    public boolean isCellEditable(EventObject anEvent) { 
     return true; 
    } 

    public boolean shouldSelectCell(EventObject anEvent) { 
     return false; 
    } 

    public boolean stopCellEditing() { 
     return super.stopCellEditing(); 
    } 

    public void cancelCellEditing() { 
    } 

    public void addCellEditorListener(CellEditorListener l) { 
    } 

    public void removeCellEditorListener(CellEditorListener l) { 
    } 

    public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { 
     txt = (value == null) ? "" : value.toString(); 
     button.setText(txt); 
     return button; 
    } 
} 

은 당신이 가진 문제를 찾을 수 있습니까? 그것은 순전히 내 미친 ...

감사를 구동 :

+0

그래서 [질문] (http://stackoverflow.com/q/1475543/243373)에 솔루션에 대한 링크가 있습니다. –

답변

1

체크 아웃 Table Button Column.

단일 클래스에서 버튼 렌더러와 편집기를 결합합니다.

사용자가 단추를 호출 할 때 해당 단추를 클릭하거나 니모닉을 호출하여 사용자 정의 Action을 호출하면됩니다.

관련 문제