H
Han
Gast
Hallo......Interfaces sowie abstrakte Klassen können nicht instanziiert werden oder?
mfg,
Hannes
mfg,
Hannes
Beni hat gesagt.:Versuchs doch mal :wink: Nein, die können nicht instanziiert werden.
public void setTabDefaults(boolean _setting) {
myEditorListener dCEL = new myEditorListener(); // FEHLER !!!
dTAB.getTableHeader().setEnabled(_setting);
dTAB.getTableHeader().setResizingAllowed(_setting);
dTAB.getTableHeader().setReorderingAllowed(_setting);
dTAB.setDragEnabled(_setting);
dTAB.setColumnSelectionAllowed(_setting);
dTAB.setRowSelectionAllowed(_setting);
dTAB.getColumnModel().getColumn( 2).setCellEditor(new DefaultCellEditor(new JTextField()));
dTAB.getColumnModel().getColumn( 2).getCellEditor().addCellEditorListener(dCEL);
...
}
public void setTabDefaults(boolean _setting) {
myEditorListener dCEL;
dTAB.getTableHeader().setEnabled(_setting);
dTAB.getTableHeader().setResizingAllowed(_setting);
dTAB.getTableHeader().setReorderingAllowed(_setting);
dTAB.setDragEnabled(_setting);
dTAB.setColumnSelectionAllowed(_setting);
dTAB.setRowSelectionAllowed(_setting);
dTAB.getColumnModel().getColumn( 2).setCellEditor(new DefaultCellEditor(new JTextField()));
dTAB.getColumnModel().getColumn( 2).getCellEditor().addCellEditorListener(dCEL); // FEHLER !!!
...
}
import javax.swing.event.*;
public abstract class myEditorListener implements java.awt.event.KeyListener,
java.awt.event.MouseListener,
javax.swing.event.CellEditorListener {
boolean _isDebug = false;
char _isDigit = 0x00;
int _isCode = -1;
public void setDebug(boolean _debug) {
this._isDebug = _debug;
}
private void setKeyValues(java.awt.event.KeyEvent evt) {
this._isDigit = evt.getKeyChar();
this._isCode = evt.getKeyCode();
}
private boolean getDebug() {
return this._isDebug;
}
public void keyTyped(java.awt.event.KeyEvent evt) {
if (this.getDebug()) {
System.out.println(evt.getComponent().getClass().toString());
System.out.println(evt.getKeyChar());
}
setKeyValues(evt);
}
public void mouseReleased(java.awt.event.MouseEvent evt) {
if (this.getDebug()) {
System.out.println(evt.getComponent().getClass().toString());
}
}
}
SnooP hat gesagt.:äh... sollen wir jetzt erst raten wo das problem überhaupt liegt oder kommt noch was? was sollte am letzten laut nb fehlerfreien code problematisch sein? Wo liegt das Problem mit dem not initialized?
SnooP hat gesagt.:zu jeder abstrakten Oberklasse muss man konkrete Klassen ableiten, die man dann wiederum verwenden kann bzw. einem abstrakten Obertyp auch zuweisen kann... eine Klasse myBla... würde ich jedoch von der Namenskonvention her nie abstrakt machen... My (groß übrigens besser) impliziert eigentlich immer eine konkrete Implementierung und nix abstraktes.
Brainiac hat gesagt.:Du mußt also von Deiner abstracten Klasse eine weiter ableiten. Diese kannst Du dann benutzen. Sollte eigentlich logisch sein, da das Konzept des abstracten das so vorraussetzt. Wenn Du keine weiter Klasse ableiten willst, mach halt die benutzte Klasse nicht abstrakt.
Die Idee hinter abstrakt ist eine gewisse Struktur vorzugeben die abgeleitete Klassen haben müssen, die selber aber noch nciht aussreichend ist um sie konkret zu benutzen. Bsp.: AbstractButton
/**
*
* @author vjahns
*/
public class myEditorListener extends A_editorListener {
/** Creates a new instance of myEditorListener */
public myEditorListener() {
}
}
public abstract class A_editorListener implements java.awt.event.KeyListener,
java.awt.event.MouseListener,
javax.swing.event.CellEditorListener {
boolean _isDebug = false;
char _isDigit = 0x00;
int _isCode = -1;
public void setDebug(boolean _debug) {
this._isDebug = _debug;
}
private void setKeyValues(java.awt.event.KeyEvent evt) {
this._isDigit = evt.getKeyChar();
this._isCode = evt.getKeyCode();
}
private boolean getDebug() {
return this._isDebug;
}
public void keyTyped(java.awt.event.KeyEvent evt) {
if (this.getDebug()) {
System.out.println(evt.getComponent().getClass().toString());
System.out.println(evt.getKeyChar());
}
setKeyValues(evt);
}
public void mouseClicked(java.awt.event.MouseEvent evt) {
if (this.getDebug()) {
System.out.println(evt.getComponent().getClass().toString());
}
}
public void mousePressed(java.awt.event.MouseEvent evt) {
if (this.getDebug()) {
System.out.println(evt.getComponent().getClass().toString());
}
}
public void mouseReleased(java.awt.event.MouseEvent evt) {
if (this.getDebug()) {
System.out.println(evt.getComponent().getClass().toString());
}
}
}
init:
deps-jar:
Compiling 1 source file to ....\JavaSource\javaTAS\build\classes
....\JavaSource\javaTAS\src\myEditorListener.java:14: myEditorListener is not abstract
and does not override abstract method
keyReleased(java.awt.event.KeyEvent) in java.awt.event.KeyListener
public class myEditorListener extends A_editorListener {
1 error
BUILD FAILED (total time: 0 seconds)
Exakt so... - entweder du überschreibst alle abstrakten Methoden (zumindest nen Methodenrumpf muss da sein) oder aber du benutzt die entsprechenden Adapterklassen die Java auch schon mitgibt... KeyAdapter, MouseAdapter etc. - dort brauchst du nur die Methoden zu überschreiben, die du wirklich benötigst...Also müssen sämtliche abstrakten Methoden überschrieben werden, damit der Compiler zufrieden ist....
SnooP hat gesagt.:Exakt so... - entweder du überschreibst alle abstrakten Methoden (zumindest nen Methodenrumpf muss da sein) oder aber du benutzt die entsprechenden Adapterklassen die Java auch schon mitgibt... KeyAdapter, MouseAdapter etc. - dort brauchst du nur die Methoden zu überschreiben, die du wirklich benötigst...
SnooP hat gesagt.:zu Cobol: siehe Sig
zu Adapterklassen: siehe http://www.galileocomputing.de/open...sel15_001.htm#Rxx747java15001040005391F040117