2016-11-05 6 views
0

ボタンをクリックできないという問題が発生しました。彼らはボタンのデザインを持つテキストフィールドのように振る舞います。jTuttonでjButtonをクリックできない

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

SOのこの[質問](http://stackoverflow.com/q/1475543/243373)には、ソリューションへのリンクがいくつかあります。 –

答えて

1

チェックアウトTable Button Column

ボタンレンダラとエディタを1つのクラスにまとめました。

あなたが行う必要があるのは、ボタンをクリックしたとき(ボタンをクリックするか、ニーモニックを呼び出すか)にカスタムActionを呼び出すことです。

関連する問題