| | |
CodeEditor = problem
![]() |
•
•
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 29 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; 29 Days Ago at 12:16 pm.
•
•
Join Date: Dec 2008
Posts: 16
Reputation:
Solved Threads: 0
0
#5 28 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 28 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; 28 Days Ago at 4:55 pm.
•
•
Join Date: Dec 2008
Posts: 16
Reputation:
Solved Threads: 0
0
#7 28 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 28 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 28 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 28 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; 28 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 |
2dgraphics account android api apple applet application arguments array arrays automation banking binary binarytree bluetooth chat chatprogramusingobjects class client code color component count database derby design eclipse eclipsedevelopment encryption error fractal game givemetehcodez graphics gridlayout gui homework html ide if_statement image integer interface j2me java javadesktopapplications javaprojects jlabel jni jpanel julia keyword linux list macintosh map method methods midlethttpconnection mobile netbeans newbie nullpointerexception object open-source os problem producer program programming project projectideas property read recursion reference replaysolutions ria scanner search server set size sms sort sourcelabs splash sql sqlite stop string swing testautomation threads transforms tree ui unicode validation windows





