問題タブ [defaultstyleddocument]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
203 参照

java - JTextPane DefaultStyledDocument と setEditorKit の競合

行番号を表示し、いくつかのキーワードに色を付けるプロジェクトで JTextPane を使用しています。行番号の表示には「setEditorKit」を使用し、テキストの色付けには、DefaultStyledDocument の insertString() メソッドと removeString() メソッドをオーバーライドしてから、「JTextPane.setDocument(DefaultStyledDocument_object)」を使用しています。

私が直面している問題は、JTextPane に EditorKit を追加すると、色付け部分が機能しないことです。また、EditorKit を設定した後に DefaultStyledDocument を追加すると、insertString メソッドがキャレットを「ゼロ キャレット位置」に移動するため、UI が台無しになります。

これが私が達成しようとしている機能のイメージです。

私が欲しいもの
これは、私の JTextPane をどのように見せたいかです。

混乱
これが現在の外観です

アプリケーションで「setEditorKit」と「DefaultStyledDocument」の両方を使用するにはどうすればよいですか?

0 投票する
1 に答える
453 参照

java - 複数の StyleConstants を AttributeSet に追加する

テキストの文字列があります:「これは |<スキー>| に行くための |<良い>| 山です。」

|<良い>|が欲しい と|<スキー>| 赤、斜体、FontSize 9 で表示されます。

個々の AttributeSet を設定しました

パターンを正しく見つける正規表現があります。しかし、複数の AttributeSet を同じ一致に設定しようとすると、最初の 1 つだけが正規表現を尊重します。他のものは、文字列全体に適用されます。クラス全体は次のとおりです。

これを達成するためにまだ発見していないベストプラクティスを誰かが学ぶのを手伝ってくれたら、とても感謝しています。

0 投票する
3 に答える
188 参照

java - Java コードの最適化 - この remove() 関数を最適化するにはどうすればよいですか?

Compilersというクラスのプロジェクトとしてカスタム言語を作っています。プロジェクト全体は Java であり、JFlexを語彙アナライザーとして使用し、Cupを構文アナライザーとして使用しています。

この言語用の単純なテキスト エディターを作成しました。これは基本的に JTextPane で構成され、ユーザーは解析されるカスタム コードを入力できます。この JTextPane には DefaultStyledDocument があり、JTextPane 内のコード (テキスト) のキーワード、コメント、文字列、数字などの色を変更するなど、文字属性を設定するために使用されます。

私が使用しているコードは次のとおりです。

SyntaxHighlighter クラスは基本的に、特定のテキスト (キーワード、文字列など) を検索する方法としてのみ使用されるレクサー (JFlex で作成) です。すべてが完璧に機能しますが...

問題:

JTextPane に適切な量のテキストがある場合、バックスペース キーを押したままにしてテキストを削除すると、プログラムの遅延がかなり大きくなります。これが発生すると私が考える理由は、バックスペース キーを押したままにすると、削除される各文字に対して remove() 関数が呼び出されるため、SyntaxHighlighter がすべての文字が削除された状態で実行されるためだと考えられます。ファイルからコードをロードするか (そのファイル内のテキスト全体が SyntaxHighlighter によって全体として分析される)、または遅延に気付くほど速く入力できないため、テキストの挿入は実際には問題ではありません。

これを最適化する方法はありますか?皆さん、ありがとうございました!

0 投票する
1 に答える
40 参照

java - Jython - DefaultStyledDocument で 2 つの LeafElements をマージするにはどうすればよいですか?

私たちが持っているという意味で、DefaultStyledDocument サブクラスを「正規化」しようとしていますorg.w3c.dom.Node.normalize()。つまり、隣接するテキスト「葉」をマージします。DefaultStyledDocument の場合、隣接する 2 つのリーフが同じ属性を持つ (または属性がない) 場合、これらのリーフはマージ対象として識別されます。

以下は単純なバージョンです (実際の属性はチェックしていません。これは、プレーン テキストまたは 1 つの可能なマークアップ スタイルを持つテキストのユース ケースです)。

これを実行すると、次のエラーが発生します。

スレッド「AWT-EventQueue-0」での例外 java.lang.ArrayIndexOutOfBoundsException at java.lang.System.arraycopy(Native Method) at javax.swing.text.AbstractDocument$BranchElement.replace(AbstractDocument.java:2290)

javax.swing.text.DefaultStyledDocument()LeafElementコンストラクターでparam 1として試す前に、 「 self」(つまり、normalise1行目で呼び出すDefaultStyledDocument)を試しました:同じエラー。

0 投票する
1 に答える
100 参照

java - 一致しない文字を強調表示する Java 構文

ここに投稿されたコードを再利用して、構文の強調表示を実装しています。問題は、各文字「{、}、<、>」が色付けされておらず、その後に非文字が続いていないことです。たとえば、「

0 投票する
1 に答える
378 参照

html - Chrome の HTML フォーム コントロールでデフォルトの強い青色を変更するにはどうすればよいですか?

ここに画像の説明を入力

3 番目の css ライブラリを使用して入力要素のデフォルトのシャープ ブルー スタイルを変更する以外に回避策はありますか? このような更新の後、複雑なインターフェイスの外観が完全に一貫性を欠いていました...