Hallo Leute,
ich möchte einen Texteditor machen bei dem auf der linken Seite die Zeilennummern angezeigt werden.
Nun habe ich es schon soweit hinbekommen, dass wenn ich ziemlich oft Enter drücke, links die Zeilen mitfahren...das Problem ist nun, wenn ich wieder hinaufscrolle, fahren die Zeilennummern nicht zurück.
Hier der Code:
l.setTopPixel(k*17); damit scrolle ich hinunter, das *17 ist die Höhe der Zeile, also 17 Pixel.
Weiß jemand eine bessere Lösung?? Oder was ich verbessern kann bzw. tun kann damit es funktioniert??
Danke im Vorraus
EanstKristoffa
ich möchte einen Texteditor machen bei dem auf der linken Seite die Zeilennummern angezeigt werden.
Nun habe ich es schon soweit hinbekommen, dass wenn ich ziemlich oft Enter drücke, links die Zeilen mitfahren...das Problem ist nun, wenn ich wieder hinaufscrolle, fahren die Zeilennummern nicht zurück.
Hier der Code:
Java:
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.StyledText;
import org.eclipse.swt.events.VerifyEvent;
import org.eclipse.swt.events.VerifyListener;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
public class Testklasse {
Display display;
Shell shell;
StyledText text;
public Testklasse(){
display = new Display();
shell = new Shell(display);
shell.setText("Shell");
shell.setLayout(new BorderLayoutMain(10));
final StyledText l = new StyledText(shell, SWT.MULTI|SWT.BORDER);
l.setText("1");
l.setEnabled(false);
l.setEditable(false);
l.setLayoutData(new BorderLayoutMain.BorderDataMain(BorderLayoutMain.WEST));
Font font = new Font(shell.getDisplay(), "Courier New", 10, SWT.NORMAL);
text = new StyledText(shell, SWT.MULTI|SWT.BORDER|SWT.V_SCROLL);
text.setFont(font);
Font font1 = new Font(shell.getDisplay(), "Courier New", 10, SWT.NORMAL);
l.setFont(font1);
l.setBackground(display.getSystemColor(SWT.COLOR_GRAY));
text.setLayoutData(new BorderLayoutMain.BorderDataMain(BorderLayoutMain.CENTER));
text.addVerifyListener(new VerifyListener(){
public void verifyText(VerifyEvent arg0) {
String lines="";
for(int i=1;i<=text.getLineCount()+1;i++){
lines=lines+(i)+"\n";
}
l.setText(lines.substring(0,lines.length()-1));
int k=l.getContent().getLineCount();
l.setTopPixel(k*17);
}
});
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
display.dispose();
}
public static void main(String[] args) {
new Testklasse();
}
}
l.setTopPixel(k*17); damit scrolle ich hinunter, das *17 ist die Höhe der Zeile, also 17 Pixel.
Weiß jemand eine bessere Lösung?? Oder was ich verbessern kann bzw. tun kann damit es funktioniert??
Danke im Vorraus
EanstKristoffa