17. juli 2005 - 17:51Der er
5 kommentarer og 1 løsning
changeSelection() problem!
Når man vælger en ny række i jdbTable'en, skal der kontrollers for om ændringer er foretaget i den tidligere række. Hvis det er tilfældet skal man blive spurgt om, om ændringerne skal gemmes. Når der foretages ændringer, sættes gem-knappen til aktiv: jButton8.setEnabled(true). Herved kan der let tjekkes for om, der overhodet er foretaget ændringer i rækken, ved at tjekke for om jButton8 er aktiv eller ej. Yderligere skal det tjekkes for om der er valgt en ny række, og jeg har forsøgt at bruge valueChanged(ListSelectionEvent e) til det, men det er ikke blevet så godt. Jeg ved ikke helt, hvordan jeg kontrollere for en ny række er valgt, og hvordan jeg får det til at passe ind i det jeg her har lavet. Hvis Cancel vælges, skal den tidligere række vælges.
public void changeSelection(int row, int column, boolean toggle, boolean extend) { JTable tce = new CustomEditor(jdbTable2); if (!jButton8.isEnabled()) { super.changeSelection(row, column, toggle, extend); } else (jButton8.isEnabled() && [Er en ny række valgt?]) { int selection = JOptionPane.showConfirmDialog(null,"Vil du gemme ændringerne","Gem ændringer....", JOptionPane.WARNING_MESSAGE); if (selection == JOptionPane.YES_OPTION) { saveDataset(); } else (selection == CANCEL_OPTION) { } } }};
Ok, nu har jeg løst problemet, men hvordan disabler jeg keyboardet, fordi den nedadgående piltast er stadig aktiv. Man kan altså vælge ny rækkke med den, selvom det ikke skulle være tilladt. Det er kun denne piltast, der driller mig.
Undskyld - Undskyld - at jeg brændte dig af, fik feriekuller og glemte alt om dit spørgsmål herinde !
Løsning: Hemmeligheden ligger i lave en editor der ikke kan forlades, med mindre der på en eller anden måde er taget stilling teksten i cellen - se eksempel.
public boolean stopCellEditing(){ // Her ser du hvordan du får fat i celle editorens værdi // og værdien af cellen i tabellen, når du begynder redigering // af cellen, har tabelcelle og editor IKKE samme værdi ! String editorVal = getCellEditorValue().toString(); Object tableCellVal = table.getValueAt(table.getSelectedRow(), table.getSelectedColumn());
// Af test hensyn har jeg valgt at man kun kan skrive "abc" // i denne kolonne, her skal du indsætte din if-sætning if(!editorVal.equals("abc")) { canCallCell = false; JOptionPane.showMessageDialog(null, "Du kan kun skrive \"abc\" i dette felt", "Fejl !",JOptionPane.ERROR_MESSAGE); return false; }
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.