Qui il mio ButtonRenderer, ho omesso qualche riga ma non credo sia importante
e il mio TableModelcodice:public class ButtonRenderer extends JButton implements TableCellRenderer { /** * */ private static final long serialVersionUID = 1L; private boolean[] disp; private boolean[] penal; private String tipo; private int typeButton; public ButtonRenderer(TableFrame _frame, String tipo, int typeButton) { setOpaque(true); disp=_frame.disputata; this.tipo=tipo; this.typeButton=typeButton; penal=_frame.getPenalized(); } public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { if (isSelected) { setForeground(table.getSelectionForeground()); setBackground(table.getSelectionBackground()); } else{ setForeground(table.getForeground()); setBackground(UIManager.getColor("Button.background")); } boolean editable = table.isCellEditable(row, column); setEnabled(editable); ... ... ... ... ... return this; } }
codice:public class TableModelFrame extends DefaultTableModel{ /** * */ private static final long serialVersionUID = 1L; @SuppressWarnings("unused") private Object[][] data; private String tipo; private boolean[] disp; private boolean buttonsEnable; public TableModelFrame(Object[][] data, Object[] title, String tipo) { super(data, title); this.data=data; this.tipo=tipo; buttonsEnable=true; } public void setDisp(boolean[] disp){ this.disp=disp; } public void setButtonsEnable(boolean enable){ this.buttonsEnable=enable; fireTableChanged(new TableModelEvent(this, 0, getRowCount()-1, 7)); } public boolean isCellEditable(int row, int column) { if(buttonsEnable) { if(column==3 || column==4 || column==7 ) return true; else return false; } else return false; } @SuppressWarnings({ "rawtypes", "unchecked" }) public Class getColumnClass(int column) { if (column >= 0 && column <= getColumnCount()) return getValueAt(0, column).getClass(); else return Object.class; } }
Lo SwingWorkerClass che non è cambiato
codice:class SwingWorkerClass extends SwingWorker<Void, Void> { private ProgressPanel progressBar; private Risultato r; private ButtonEditor ed; private TableModelFrame a_model; public SwingWorkerClass(ProgressPanel aProgressBar, ButtonEditor ed, Risultato ris, TableModelFrame m_model) { this.progressBar = aProgressBar; r=ris; this.ed=ed; a_model=m_model; a_model.setButtonsEnable(false); progressBar.setVisible(true); } @Override public Void doInBackground() { //long running task ed.modifyResult(r); return null; } @Override public void done() { a_model.setButtonsEnable(true); progressBar.setVisible(false); }

Rispondi quotando
