ここに私の問題があります:トラフィックは、シリアルポートからのテキストを挿入するJTextAreaであり、DocumentListenerを実装しました:
Java コード:
Traffic.getDocument (). AddDocumentListener (new MyDocumentListener ());
JTextAreaの「トラフィック」は、私が望むものを示し、プログラムは問題なく実行されます。今私がしたいのは、挿入されたもの(挿入イベントでのみ)を行ごとに処理することです(それがテストの目的です)。例を挙げます。
==> 「ON-HOOK」を受信した場合、オンフックの電話の JPanel に画像を入れます 「OFF-HOOK」を受信した場合、電話のオフフックの JPanel に画像を入れると、リストは ...
それを行う方法、必要なときにペイントコンポーネントを呼び出して、ペイントコンポーネントでグラフィック操作しかできないため、必要なものを描画する方法を理解していませんでした()。これは DocumentListener のクラスです。
protected class MyDocumentListener extends JPanel implements javax.swing.event.DocumentListener
{
@Override
public void changedUpdate(javax.swing.event.DocumentEvent e) {
// text has been altered in the textarea
}
@Override
public void insertUpdate(javax.swing.event.DocumentEvent e)
{
// text has been added to the textarea
try {
if (!Traffic.getText(Traffic.getLineStartOffset(Traffic.getLineCount()-1),Traffic.getLineEndOffset(Traffic.getLineCount()-1)-Traffic.getLineStartOffset(Traffic.getLineCount()-1)).contains(">>"))
{
if (Traffic.getLineCount() == (lastreplace + 2) )
{
System.err.println(Traffic.getText(Traffic.getLineStartOffset(lastreplace),Traffic.getLineEndOffset(lastreplace) - Traffic.getLineStartOffset(lastreplace)));
lastreplace +=1;
}
else
{
System.err.println(Traffic.getText(Traffic.getLineStartOffset(lastreplace),
Traffic.getLineEndOffset(lastreplace) -
Traffic.getLineStartOffset(lastreplace)));
}
}
Traffic.setCaretPosition(Traffic.getDocument().getLength());
} catch (BadLocationException ex) {
Logger.getLogger(TrafficSerialPort.class.getName()).log(Level.SEVERE, null, ex);
}
}
@Override
public void removeUpdate(javax.swing.event.DocumentEvent e) {
// text has been removed from the textarea
}
}
"PortArchitecture (..)"
will draw what I want と呼ばれるメソッドを使用しようとしましたが、使用しgetGraphics()
ないでくださいと言われたので、paintComponent()
本当に困っています助けてください。