| | |
CodeEditor = problem
Please support our Java advertiser: Programming Forums - DaniWeb Sister Site
![]() |
•
•
Join Date: Dec 2008
Posts: 16
Reputation:
Solved Threads: 0
Hello,
I have a problem which is this:
and the problem is there:
new CodeEditor(textEdit.document());
it does't appear at TextEdit
Kjiu
I have a problem which is this:
Java Syntax (Toggle Plain Text)
private void setupEditor() { QFont font = new QFont(); font.setFamily("Lucida Console"); font.setFixedPitch(true); font.setPointSize(10); textEdit = new QTextEdit(); textEdit.setLineWrapMode(QTextEdit.LineWrapMode.NoWrap); textEdit.setFont(font); new Highlighter(textEdit.document()); new CodeEditor(textEdit.document()); } public class CodeEditor extends QPlainTextEdit { public CodeEditor(QTextDocument textDocument) // public CodeEditor() { lineNumberArea = new LineNumberArea(this); blockCountChanged.connect(this, "updateLineNumberAreaWidth(Integer)"); updateRequest.connect(this, "updateLineNumberArea(QRect,Integer)"); cursorPositionChanged.connect(this, "highlightCurrentLine()"); updateLineNumberAreaWidth(0); highlightCurrentLine(); } public int lineNumberAreaWidth() { int digits = 1; int max = Math.max(1, blockCount()); while (max >= 10) { max /= 10; ++digits; } int space = 3 + fontMetrics().width('9') * digits; return space; } public void updateLineNumberAreaWidth(Integer newBlockCount) { setViewportMargins(lineNumberAreaWidth(), 0, 0, 0); } public void updateLineNumberArea(QRect rect, Integer dy) { if (dy > 0) lineNumberArea.scroll(0, dy); else lineNumberArea.update(0, rect.y(), lineNumberArea.width(), rect.height()); if (rect.contains(viewport().rect())) updateLineNumberAreaWidth(0); } protected void resizeEvent(QResizeEvent e) { super.resizeEvent(e); QRect cr = contentsRect(); lineNumberArea.setGeometry(new QRect(cr.left(), cr.top(), lineNumberAreaWidth(), cr.height())); } private void highlightCurrentLine() { List<QTextEdit_ExtraSelection> extraSelections = new Vector<QTextEdit_ExtraSelection>(); if (!isReadOnly()) { QTextEdit_ExtraSelection selection = new QTextEdit_ExtraSelection(); QColor lineColor = QColor.yellow.lighter(160); QTextCharFormat format = selection.format(); format.setBackground(new QBrush(lineColor)); format.setProperty(QTextFormat.Property.FullWidthSelection.value(), new Boolean(true)); selection.setFormat(format); QTextCursor cursor = textCursor(); cursor.clearSelection(); selection.setCursor(cursor); extraSelections.add(selection); } setExtraSelections(extraSelections); } public void lineNumberAreaPaintEvent(QPaintEvent event) { QPainter painter = new QPainter(lineNumberArea); painter.setPen(new QPen(QColor.black)); painter.fillRect(event.rect(), new QBrush(QColor.lightGray)); QTextBlock block = firstVisibleBlock(); int blockNumber = block.blockNumber(); int top = (int) blockBoundingGeometry(block).translated(contentOffset()).top(); int bottom = top + (int) blockBoundingRect(block).height(); while (block.isValid() && top <= event.rect().bottom()) { if (block.isVisible() && bottom >= event.rect().top()) { String number = String.valueOf(blockNumber + 1); painter.drawText(0, top, lineNumberArea.width(), fontMetrics().height(), Qt.AlignmentFlag.AlignRight.value(), number); } block = block.next(); top = bottom; bottom = top + (int) blockBoundingRect(block).height(); ++blockNumber; } } private class LineNumberArea extends QWidget { public LineNumberArea(CodeEditor editor) { codeEditor = editor; setParent(codeEditor); } public QSize sizeHint() { return new QSize(codeEditor.lineNumberAreaWidth(), 0); } protected void paintEvent(QPaintEvent event) { codeEditor.lineNumberAreaPaintEvent(event); } private CodeEditor codeEditor; } private LineNumberArea lineNumberArea; }
and the problem is there:
new CodeEditor(textEdit.document());
it does't appear at TextEdit
Kjiu
•
•
Join Date: Nov 2008
Posts: 332
Reputation:
Solved Threads: 53
0
#2 33 Days Ago
You are working with package qtjambi. You should know it better.
first read
http://doc.trolltech.com/qtjambi-4.5.2_01/index.html
http://doc.trolltech.com/qtjambi-4.5...nTextEdit.html
select proper method from QPlainTextEdit to apply textEdit.document() in CodeEditor constructor
first read
http://doc.trolltech.com/qtjambi-4.5.2_01/index.html
http://doc.trolltech.com/qtjambi-4.5...nTextEdit.html
select proper method from QPlainTextEdit to apply textEdit.document() in CodeEditor constructor
Last edited by quuba; 33 Days Ago at 12:16 pm.
•
•
Join Date: Dec 2008
Posts: 16
Reputation:
Solved Threads: 0
0
#5 32 Days Ago
sorry for that, I am beginner of learning Java
where I must put :
where I must put :
Java Syntax (Toggle Plain Text)
void setDocument(QTextDocument document)
Java Syntax (Toggle Plain Text)
new Highlighter(textEdit.document()); new CodeEditor(textEdit.document()); } public class CodeEditor extends QPlainTextEdit { public CodeEditor(QTextDocument parent)
•
•
Join Date: Nov 2008
Posts: 332
Reputation:
Solved Threads: 53
0
#6 32 Days Ago
Java Syntax (Toggle Plain Text)
public class CodeEditor extends QPlainTextEdit { public CodeEditor(QTextDocument textDocument) //textDocument as parameter in constructor // public CodeEditor() { // here setDocument(textDocument); // the same textDocument as argument in method setDocument( lineNumberArea = new LineNumberArea(this); // .......
http://java.sun.com/docs/books/tutor...arguments.html
Last edited by quuba; 32 Days Ago at 4:55 pm.
•
•
Join Date: Dec 2008
Posts: 16
Reputation:
Solved Threads: 0
0
#7 32 Days Ago
hmmm the error is:
QPlainTextEdit::setDocument: Document set does not support QPlainTextDocumentLayout
QPlainTextEdit::setDocument: Document set does not support QPlainTextDocumentLayout
Java Syntax (Toggle Plain Text)
private void setupEditor() { QFont font = new QFont(); font.setFamily("Arial"); font.setFixedPitch(true); font.setPointSize(10); textEdit = new QTextEdit(); textEdit.setLineWrapMode(QTextEdit.LineWrapMode.NoWrap); textEdit.setFont(font); new Highlighter(textEdit.document()); new CodeEditor(textEdit.document()); } public class CodeEditor extends QPlainTextEdit { public CodeEditor(QTextDocument textDocument) // public CodeEditor() { setDocument(textDocument); lineNumberArea = new LineNumberArea(this);
•
•
Join Date: Nov 2008
Posts: 332
Reputation:
Solved Threads: 53
0
#8 32 Days Ago
Summary of conversation.
I know, You want to use the package trolltech to create applications.
As a beginner java programmer you cetainly think "this is the shortest way to achieve rapid results".
As you can see, the use of the package trolltech requires knowledge of two things: first - knowledge of java, a second -knowledge of the specific package trolltech. I think that I have some basic knowledge on java, but I do not know trolltech package.
I can help with the java language problems, but not with a specific package.
For this, I recommend systematic learning the Java language and the Java API, that allows you to create programs with a greater perspective. You can do this, as I did and still do, being self-taught.
See you later on Dani Web pages.
quuba
I know, You want to use the package trolltech to create applications.
As a beginner java programmer you cetainly think "this is the shortest way to achieve rapid results".
As you can see, the use of the package trolltech requires knowledge of two things: first - knowledge of java, a second -knowledge of the specific package trolltech. I think that I have some basic knowledge on java, but I do not know trolltech package.
I can help with the java language problems, but not with a specific package.
For this, I recommend systematic learning the Java language and the Java API, that allows you to create programs with a greater perspective. You can do this, as I did and still do, being self-taught.
See you later on Dani Web pages.
quuba
•
•
Join Date: Nov 2008
Posts: 332
Reputation:
Solved Threads: 53
0
#9 32 Days Ago
•
•
•
•
run:
QPlainTextEdit::setDocument: Document set does not support QPlainTextDocumentLayout
BUILD SUCCESSFUL (total time: 8 seconds)
Java Syntax (Toggle Plain Text)
public static void main(String args[]) { QApplication.initialize(args); // QFont font = new QFont(); font.setFamily("Lucida Console"); font.setFixedPitch(true); font.setPointSize(30); QTextEdit textEdit = new QTextEdit(); // textEdit.setLineWrapMode(QTextEdit.LineWrapMode.NoWrap); textEdit.setFont(font); textEdit.insertHtml("<H1><HR WIDTH=\"100%\">Applet HTML Page<HR WIDTH=\"100%\"></H1><P>aaaaaaaaaaaa</P>"); new CodeEditor(textEdit).show(); QApplication.exec(); }
Java Syntax (Toggle Plain Text)
public class CodeEditor extends QTextEdit { //![constructor] public CodeEditor(QTextEdit textEdit) { super.setDocument(textEdit.document()); //lineNumberArea = new LineNumberArea(this); //blockCountChanged.connect(this, "updateLineNumberAreaWidth(Integer)"); //updateRequest.connect(this, "updateLineNumberArea(QRect,Integer)"); cursorPositionChanged.connect(this, "highlightCurrentLine()"); //updateLineNumberAreaWidth(0); highlightCurrentLine(); setWindowTitle("Code Editor Example"); setWindowIcon(new QIcon("classpath:com/trolltech/images/qt-logo.png")); }
CodeEditor must extend QTextEdit
commented lines does not work in case QTextEdit.
•
•
Join Date: Dec 2008
Posts: 16
Reputation:
Solved Threads: 0
0
#10 32 Days Ago
thanks, but I wanted to have Highlighter and CodeEditor.
I want to be like this :
http://i37.tinypic.com/esixyh.png
I want to be like this :
http://i37.tinypic.com/esixyh.png
Last edited by kjiu; 32 Days Ago at 3:32 am.
![]() |
Other Threads in the Java Forum
- Previous Thread: How to get control on web links.
- Next Thread: tic-tac-toe!
| Thread Tools | Search this Thread |
-xlint android api applet application array arrays automation bi binary blackberry block bluetooth chat class classes client code compile compiler component converter database developmenthelp eclipse error exception fractal freeze functiontesting game gameprogramming givemetehcodez graphics gui html ide image input integer j2me j2seprojects java javac javaprojects jetbrains jni jpanel jtable julia learningresources lego linux list login loop loops mac map method methods mobile netbeans newbie nonstatic notdisplaying number online page print problem program programming project qt recursion scanner screen server set singleton size sms sort sql string swing system template textfields threads time title tree tutorial-sample update variablebinding windows working xor





