Pessoa, eu tem como colocar um botão em uma JTable??
Fiz ela com TableModel…tem como?
:?:
Botão em JTable
L
1 Resposta
F
olha esse exemplo:
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.EventObject;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.SwingUtilities;
import javax.swing.event.CellEditorListener;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.TableCellEditor;
import javax.swing.table.TableCellRenderer;
public class ButtonTable {
public static void main(String args[]) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new ButtonTable();
}
});
}
public ButtonTable() {
MyModel model = new MyModel();
JTable table = new JTable(model);
table.setDefaultRenderer(JButton.class, new ButtonRenderer());
table.setDefaultEditor(JButton.class, new ButtonEditor());
JScrollPane scroller = new JScrollPane(table);
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.getContentPane().add(scroller);
f.setSize(500, 500);
f.setVisible(true);
}
}
class ButtonRenderer implements TableCellRenderer {
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
return (JButton) value;
}
}
class ButtonEditor implements TableCellEditor {
private java.util.Vector listeners = new java.util.Vector();
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
table.setRowSelectionInterval(row, row);
table.setColumnSelectionInterval(column, column);
return (JButton) value;
}
public boolean shouldSelectCell(EventObject o) {
return true;
}
public void removeCellEditorListener(CellEditorListener l) {
listeners.remove(l);
}
public void addCellEditorListener(CellEditorListener l) {
listeners.add(l);
}
public void cancelCellEditing() {
}
public Object getCellEditorValue() {
return null;
}
public boolean isCellEditable(EventObject o) {
return true;
}
public boolean stopCellEditing() {
return true;
}
}
class MyModel extends AbstractTableModel implements ActionListener {
String[] headers = { "Nome", "SobreNome", "!!!" };
Class[] columnTypes = { String.class, String.class, JButton.class };
JButton show1 = new JButton("show1");
JButton show2 = new JButton("show2");
Object[][] data = { { "Pedro", "Joao", show1 }, { "Mario", "Conhece", show2 } };
public MyModel() {
show1.addActionListener(this);
show2.addActionListener(this);
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == show1) {
System.out.println("show1");
} else if (e.getSource() == show2) {
System.out.println("show2");
}
}
public int getRowCount() {
return data.length;
}
public int getColumnCount() {
return headers.length;
}
public Class getColumnClass(int col) {
return columnTypes[col];
}
public String getColumnName(int col) {
return headers[col];
}
public boolean isCellEditable(int row, int col) {
return true;
}
public Object getValueAt(int row, int col) {
return data[row][col];
}
}
Criado 21 de março de 2005
Ultima resposta 23 de mar. de 2005
Respostas 1
Participantes 2