006
01.06.2006, 12:37 Uhr
Lumina
|
Zitat von J-jayz-Z: |
Die Methode musst du einfach in deinen Quelltext schreiben
|
So einfach ists ja wohl nicht, weil ich da schon eine bestimmte Stelle brauch. Mein Haupdialog ist abgeleitet von JFrame, FrmPumpenhelferlein.java Dann hab ich noch eine Klasse, die eine einzelne Pumpe repräsentiert: Pumpe.java Und die dritte Datei, DlgSystem.java ist von JDialog abgeleitet, damit ich die Verschaltung der Pumpen grafisch definieren kann.
So, hab jetzt getestet, euer isCellEditable wie oben einfach in FrmPumpenhelferlein.java zu kopieren, weil ich da auch den Rest von meiner JTable initialisiere:
C++: |
// ********************************************************** // Zweck: Einstellungen wie Tabellenmodell und Zeilenanzahl // an der übergebenen Tabelle vornehmen, Überschriften // für die Spalten definieren, Auswahlboxen für die // Einheiten auf die entsprechenden Spalten setzen,... // ********************************************************** private void initMyTableAndModel(JTable tbl, DefaultTableModel tm, int nrOfRows) { DefaultTableCellRenderer renderer = new DefaultTableCellRenderer(); renderer.setToolTipText("Bitte die gewünschte Einheit auswählen."); DefaultTableColumnModel tcm = new DefaultTableColumnModel(); tm = new DefaultTableModel(nrOfRows, 5); // Textfeld für Kommazahleneingabe anlegen: JTextField txtForFloats = new JTextField(); txtForFloats.addKeyListener(new KeyListener() { public void keyPressed(KeyEvent k) {} public void keyReleased(KeyEvent k) {} public void keyTyped(KeyEvent k) { if ((k.getKeyChar() < '1' || k.getKeyChar() > '9') && (k.getKeyChar() != '\b') && (k.getKeyChar() != '\n') && (k.getKeyChar() != '\r') && (k.getKeyChar() != '\t') && (k.getKeyChar() != ',') && (k.getKeyChar() != '.')) { k.consume(); } } }); // Das Kommazahlen-Textfeld als Editor verwenden: TableCellEditor editFloats = new DefaultCellEditor(txtForFloats); // Spalte A: (Pumpe) <- will ich uneditierbar machen!! TableColumn tcApump = new TableColumn(0,30); tcApump.setHeaderValue("Px"); tcApump.setResizable(false); tcm.addColumn(tcApump); // Spalte B: (Maximaldruck) TableColumn tcBpMax = new TableColumn(1,80); tcBpMax.setHeaderValue("pMax"); tcBpMax.setCellEditor(editFloats); tcm.addColumn(tcBpMax); // Spalte C: (Einheit Maximaldruck) TableColumn tcCpMaxUnit = new TableColumn(2,60); tcCpMaxUnit.setHeaderValue("Einheit"); JComboBox cboPressureUnits = new JComboBox(this.pressureUnits); TableCellEditor editPressureUnits = new DefaultCellEditor(cboPressureUnits); editPressureUnits.cancelCellEditing(); tcCpMaxUnit.setCellEditor(editPressureUnits); tcCpMaxUnit.setCellRenderer(renderer); tcm.addColumn(tcCpMaxUnit); // Spalte D: (Max. Fördermenge) TableColumn tcDVMax = new TableColumn(3,80); tcDVMax.setHeaderValue("VMax"); tcDVMax.setCellEditor(editFloats); tcm.addColumn(tcDVMax); // Spalte E: (Einheit Fördermenge) TableColumn tcEVMaxUnit = new TableColumn(4,60); tcEVMaxUnit.setHeaderValue("Einheit"); JComboBox cboVolumeUnits = new JComboBox(this.volumeUnits); TableCellEditor editVolumeUnits = new DefaultCellEditor(cboVolumeUnits); editVolumeUnits.cancelCellEditing(); tcEVMaxUnit.setCellEditor(editVolumeUnits); tcEVMaxUnit.setCellRenderer(renderer); tcm.addColumn(tcEVMaxUnit); // Tabellen-Modelle zuweisen: tbl.setModel(tm); tbl.setColumnModel(tcm); // Spaltenumsortierung unterbinden: tbl.getTableHeader().setReorderingAllowed(false); // Erste Spalten mit Pumpen-Namen füllen: this.fillFirstColumnWithPumpNames(tbl); }
|
so, das geht aber leider nicht und das mit dem Textfeld als Editor, wo ich nur Kommazahlen zulassen will, geht auch nicht...
Zu 4) Die Tabulatorreihenfolge kommt anscheinend echt darauf an, in welcher Reihenfolge man die einzelnen Elemente auf das JPanel / den Container legt. Hab alles so gelegt, dass die Reihenfolgen zusammenstimmen und damit ist auch diese Frage geklärt. Zu 5) setMnemonic geht, die Frage ist geklärt! -- ******************************************* Willst du glücklich sein im Leben, trage bei zu and'rer Glück, denn die Freude, die wir geben, kehrt ins eig'ne Herz zurück! ******************************************* Dieser Post wurde am 01.06.2006 um 13:02 Uhr von Lumina editiert. |