| | |
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: 54
0
#2 Oct 31st, 2009
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; Oct 31st, 2009 at 12:16 pm.
•
•
Join Date: Dec 2008
Posts: 16
Reputation:
Solved Threads: 0
0
#5 Oct 31st, 2009
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: 54
0
#6 Oct 31st, 2009
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; Oct 31st, 2009 at 4:55 pm.
•
•
Join Date: Dec 2008
Posts: 16
Reputation:
Solved Threads: 0
0
#7 Oct 31st, 2009
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: 54
0
#8 Oct 31st, 2009
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: 54
0
#9 Oct 31st, 2009
•
•
•
•
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 Nov 1st, 2009
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; Nov 1st, 2009 at 3:32 am.
![]() |
Other Threads in the Java Forum
- Previous Thread: How to get control on web links.
- Next Thread: tic-tac-toe!
Views: 372 | Replies: 9
| Thread Tools | Search this Thread |
Tag cloud for Java
3d @param affinetransform android api apple applet application arc arguments array arrays automation binary bluetooth byte c# chat class classes click client code compare component corrupted database detection draw eclipse error event exception file fractal game givemetehcodez graphics gui guitesting helpwithhomework html ide image input integer j2me java java.xls javaprojects jmf jni jpanel julia keytool linux list loop map method methods mobile netbeans newbie number object oracle os pong print problem producer program programming project projectideas read recursion reflection replaysolutions rim scanner screen server set size sms socket sort sql string swing terminal test threads time transfer tree web windows





