usar modificar filas dinamicamente datos como columnas cargar agregar addrow java swing jtable jscrollpane jbutton

modificar - jtable java como usar



¿Cómo puedo agregar JButton a las últimas dos celdas de la fila? (1)

Tendrá que utilizar un procesador de células personalizado (y creo que el editor personalizado manejará los eventos de clic).

Pagar usando procesadores personalizados y usar otros editores

Probablemente también quiera echar un vistazo a CellEditor.isCellEditable para establecer el número de clics para activar el botón

ACTUALIZAR

public class MyTatbleEditor { public static void main(String[] args) { new MyTatbleEditor(); } public MyTatbleEditor() { EventQueue.invokeLater(new Runnable() { @Override public void run() { try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch (ClassNotFoundException ex) { } catch (InstantiationException ex) { } catch (IllegalAccessException ex) { } catch (UnsupportedLookAndFeelException ex) { } JFrame frame = new JFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(200, 200); frame.setLocationRelativeTo(null); frame.setLayout(new BorderLayout()); Vector rows = new Vector(); for (int index = 0; index < 10; index++) { Vector data = new Vector(); data.add(new Object()); rows.add(data); } Vector cols = new Vector(); cols.add("One"); DefaultTableModel model = new DefaultTableModel(rows, cols); JTable table = new JTable(model); table.getColumn("One").setCellEditor(new MyTableButtonEditor()); table.getColumn("One").setCellRenderer(new MyTableButtonRenderer()); frame.add(new JScrollPane(table)); frame.setVisible(true); } }); } protected class MyTableButtonEditor extends AbstractCellEditor implements TableCellEditor { private JButton button; private int column; private int row; public MyTableButtonEditor() { button = new JButton("Click me if you dare"); button.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { JOptionPane.showMessageDialog(button, "How dare you :(", "Fancy that", JOptionPane.INFORMATION_MESSAGE); } }); } }); } @Override public boolean isCellEditable(EventObject e) { boolean isEditable = false; if (e instanceof MouseEvent) { MouseEvent me = (MouseEvent) e; if (me.getButton() == MouseEvent.BUTTON1 && me.getID() == MouseEvent.MOUSE_PRESSED) { isEditable = true; } } else if (e instanceof KeyEvent) { KeyEvent ke = (KeyEvent) e; if (ke.getID() == KeyEvent.KEY_PRESSED && (ke.getKeyCode() == KeyEvent.VK_SPACE || ke.getKeyCode() == KeyEvent.VK_ENTER)) { isEditable = true; } } return isEditable; } @Override public Object getCellEditorValue() { return new Object(); } @Override public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { if (isSelected) { button.requestFocus(); } this.column = column; this.row = row; return button; } } protected class MyTableButtonRenderer implements TableCellRenderer { private JButton button; public MyTableButtonRenderer() { button = new JButton("Click me if you dare"); } @Override public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { return button; } } }

Quiero agregar JButton a las últimas dos celdas de la fila de la columna ... ¿Cómo puedo hacer eso ... pls me ayuda ...

String[] columnNames= {"EmployeeId","Name", "Designation", "JoiningDate", "DOB","ContactNo","MailId","Password","Edit","Remove"}; final DefaultTableModel model1 = new DefaultTableModel(rows, columnNames); model1.addColumn("columnNames, data"); table3= new JTable(model1); table3.getColumn("Edit").setCellEditor(new ButtonEditor(new JCheckBox())); table3.getColumn("Remove").setCellEditor(new ButtonEditor(new JCheckBox())); table3.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); table3.setRowHeight( 32 ); JScrollPane pane= new JScrollPane(table3); table3.setPreferredScrollableViewportSize(table3.getPreferredSize()); JTableHeader header = table3.getTableHeader(); header.setBackground(Color.CYAN ); pane.setBackground(Color.BLACK); employeeFrame.add(pane) ; table3.getModel();