モジュール java.desktop
パッケージ javax.swing.text

クラスGlyphView

  • すべての実装されたインタフェース:
    Cloneable, SwingConstants, TabableView
    直系の既知のサブクラス:
    LabelView

    public class GlyphView
    extends View
    implements TabableView, Cloneable
    テキスト・モデルの要素上にマッピングされたビューを表す、テキストの書式付きチャンクです。 このビューは通常、何らかの方法で文字レベルの属性を使ってテキスト・グリフを表示します。 GlyphPainterクラスの実装は、実際の描画およびモデルとビューの変換を行うのに使われます。 このクラスは、モデルに関連したレイアウトおよび管理から描画を分離します。

    このビューは、フォーマットを整えるために分割をサポートしています。 分割によってできたフラグメントは、その要素の直接的な責任を持つビューを共有する(すなわち、それらはネストされたクラスであり、それ自体の状態は最小限しか持たない)ため、各フラグメントはそのリソースを共有できます。

    このビューは、タブが埋め込まれたテキストを表現することもあるので、TabableViewインタフェースを実装します。 タブが展開されるのは、タブの展開を行うコンテナにこのビューが埋め込まれている場合だけです。 タブ展開を行うコンテナとしては、ParagraphViewなどがあります。

    導入されたバージョン:
    1.3
    • コンストラクタの詳細

      • GlyphView

        public GlyphView​(Element elem)
        要素にラップされた新しいビューを作成します。
        パラメータ:
        elem - 要素
    • メソッドの詳細

      • clone

        protected final Object clone()
        シャロー・コピーを作成します。 createFragmentメソッドおよびbreakViewメソッドによって使用されます。
        オーバーライド:
        clone、クラスObject
        戻り値:
        コピー
        関連項目:
        Cloneable
      • getGlyphPainter

        public GlyphView.GlyphPainter getGlyphPainter()
        現在インストールされているグリフ・ペインタを取得します。 ペインタがまだインストールされていない場合、およびデフォルトがまだ必要でない場合は、nullが返されます。
        戻り値:
        現在インストールされているグリフペインタ
      • setGlyphPainter

        public void setGlyphPainter​(GlyphView.GlyphPainter p)
        グリフの描画に使用するペインタを設定します。
        パラメータ:
        p - グリフの描画に使用するペインタ
      • getText

        public Segment getText​(int p0,
                               int p1)
        指定された範囲を占めるテキストへの参照を取得します。 通常はGlyphPainterがグリフの描画対象文字を判定するのに使います。
        パラメータ:
        p0 - ドキュメントの開始オフセット>= 0
        p1 - ドキュメントの終了オフセット>= p0
        戻り値:
        テキストが格納されているSegment
      • getBackground

        public Color getBackground()
        グリフの描画に使用するバックグラウンド・カラーを取得します。 バックグラウンド・カラーがない場合はnullを返すようにします。 関連するドキュメントが書式付きドキュメントの場合はStyledDocument.getBackgroundを呼び出すのに実装され、そうでない場合はnullを返します。
        戻り値:
        グリフのレンダリングに使用するバックグラウンド色
      • getForeground

        public Color getForeground()
        グリフの描画に使用するフォアグラウンド・カラーを取得します。 フォアグラウンド・カラーがない場合はnullを返すようにします。 関連するドキュメントがStyledDocumentの場合はStyledDocument.getBackgroundを呼び出すのに実装されます。 関連するドキュメントがStyledDocumentでない場合は、関連するコンポーネントのフォアグラウンド・カラーが使用されます。 関連するドキュメントがない場合はnullが返されます。
        戻り値:
        グリフを描画するために使用する前景色
      • getFont

        public Font getFont()
        グリフのベースとなるフォントを取得します。 関連するドキュメントがStyledDocumentの場合はStyledDocument.getFontを呼び出すのに実装されます。 関連するドキュメントがStyledDocumentでない場合は、関連するコンポーネントのフォントが使用されます。 関連するドキュメントがない場合はnullが返されます。
        戻り値:
        グリフを基にするフォント
      • isUnderline

        public boolean isUnderline()
        グリフに下線を付けるかどうかを決定します。 trueの場合、ベースラインに下線が引かれます。
        戻り値:
        グリフに下線を引く必要がある場合
      • isStrikeThrough

        public boolean isStrikeThrough()
        グリフが取消し線を持つかどうかを決定します。 trueの場合、グリフの中央に線が引かれます。
        戻り値:
        グリフに取り消し線がある場合
      • isSubscript

        public boolean isSubscript()
        グリフを上付き文字として描画するかどうかを決定します。
        戻り値:
        グリフを上付き文字としてレンダリングする必要がある場合
      • isSuperscript

        public boolean isSuperscript()
        グリフを下付き文字として描画するかどうかを決定します。
        戻り値:
        グリフを添え字としてレンダリングする必要がある場合
      • getTabExpander

        public TabExpander getTabExpander()
        タブがこのビューに存在する場合に使うTabExpanderを取得します。
        戻り値:
        タブがこのビューに存在する場合に使用するTabExpander
      • checkPainter

        protected void checkPainter()
        グリフ・ペインタが存在するかどうかを調べます。 ペインタが存在しない場合、デフォルトのグリフ・ペインタがインストールされます。
      • getTabbedSpan

        public float getTabbedSpan​(float x,
                                   TabExpander e)
        指定されたタブ展開の実装を使うときに望ましいスパンを指定します。
        定義:
        getTabbedSpan、インタフェースTabableView
        パラメータ:
        x - タブ展開のためにビューが配置される位置>= 0。
        e - タブを検出したときにタブを展開する方法。
        戻り値:
        適切なスパン>= 0
        関連項目:
        TabableView.getTabbedSpan(float, javax.swing.text.TabExpander)
      • getPartialSpan

        public float getPartialSpan​(int p0,
                                    int p1)
        ビューの一部のため、タブ拡張と同じ軸に沿ったスパンを指定します。 このメソッドは、タブ拡張がタブストップと関連する余白を持たないテキストの部分の位置揃えを伴う場合にTabExpanderによって使用されます。 このため、指定された範囲にタブが含まれていないと仮定します。

        このメソッドは、getTabbedSpanまたはgetPreferredSizeのサービス中に呼び出すことができます。 サイズを測定するために、それ自身のテキスト・バッファを準備する必要があります。

        定義:
        getPartialSpan、インタフェースTabableView
        パラメータ:
        p0 - ドキュメントの開始オフセット>= 0
        p1 - ドキュメントの終了オフセット>= p0
        戻り値:
        スパン>= 0
      • getStartOffset

        public int getStartOffset()
        このビューが扱うモデルの一部を取得します。
        オーバーライド:
        getStartOffset、クラスView
        戻り値:
        モデルへの開始オフセット
        関連項目:
        View.getStartOffset()
      • getEndOffset

        public int getEndOffset()
        このビューが扱うモデルの一部を取得します。
        オーバーライド:
        getEndOffset、クラスView
        戻り値:
        モデルへの終了オフセット
        関連項目:
        View.getEndOffset()
      • paint

        public void paint​(Graphics g,
                          Shape a)
        一連のテキスト・スタイルの一部をレンダリングします。
        定義:
        paint、クラスView
        パラメータ:
        g - 使用する描画表面
        a - 描画するために割り当てられた領域
      • getMinimumSpan

        public float getMinimumSpan​(int axis)
        このビューの最小スパンを軸に沿って指定します。

        この実装は、ビュー内で分割できないもっとも長い領域をView.X_AXISの最小スパンとして返します。

        オーバーライド:
        getMinimumSpan、クラスView
        パラメータ:
        axis - View.X_AXISまたはView.Y_AXIS
        戻り値:
        ビューを描画できる最小スパン
        例外:
        IllegalArgumentException - axisパラメータが無効の場合
        関連項目:
        View.getMinimumSpan(int)
      • getPreferredSpan

        public float getPreferredSpan​(int axis)
        このビューに適切なスパンを軸に沿って指定します。
        定義:
        getPreferredSpan、クラスView
        パラメータ:
        axis - View.X_AXISまたはView.Y_AXIS
        戻り値:
        ビューの描画先のスパン>= 0。 通常、ビューは返されたスパン内に描画されるよう求められるが、その保証はない。 親はビューのサイズの変更や分割を行う可能性がある。
        関連項目:
        View.getPreferredSpan(int)
      • getAlignment

        public float getAlignment​(int axis)
        軸に沿ったこのビューの望ましいレイアウトを決定します。 ラベルの整列は、y軸の場合はフォント・ベースラインに沿って、x軸の場合はスーパー・クラスの整列に沿って決めます。
        オーバーライド:
        getAlignment、クラスView
        パラメータ:
        axis - View.X_AXISまたはView.Y_AXIS
        戻り値:
        望ましい配置。 この値の範囲は0.0から1.0で、0は起点への配置、1.0は起点から最大に離れた配置を表す。 0.5は、ビューの中央への配置になります。
      • viewToModel

        public int viewToModel​(float x,
                               float y,
                               Shape a,
                               Position.Bias[] biasReturn)
        ビューの座標空間からモデルの論理座標空間へのマッピングを提供します。
        定義:
        viewToModel、クラスView
        パラメータ:
        x - X座標>= 0
        y - Y座標>= 0
        a - 描画するために割り当てられた領域
        biasReturn - Position.Bias.ForwardまたはPosition.Bias.Backwardが、この配列の0番目の要素として返される
        戻り値:
        指定されたビュー内の点をもっとも適切に表現するモデル内の位置>= 0
        関連項目:
        View.viewToModel(float, float, java.awt.Shape, javax.swing.text.Position.Bias[])
      • getBreakWeight

        public int getBreakWeight​(int axis,
                                  float pos,
                                  float len)
        このビューで分割のウエイトがどのくらい適切かを示します。 このメソッドは、フォーマットの過程でbreakViewを呼び出すもっとも適切なビューを判断するために使用できます。 ウエイトが高いほど、分割にはより適切です。 値がView.BadBreakWeight以下の場合は、分割対象とはなりません。 値がView.ForcedBreakWeight以上の場合は、分割されます。

        これは、Y_AXISのスーパークラスへの転送のために実装されます。 X_AXISについては、次の値が返される可能性があります。

        View.ExcellentBreakWeight
        分割したい位置の直前に空白がある場合。
        View.BadBreakWeight
        分割したい位置が、結果として開始オフセットの分割位置になる場合。
        View.GoodBreakWeight
        以上2つの条件が該当しない場合。
        通常は、これによって、空白文字があればその場所で、そうでない場合は2文字の間で分割が行われます。

        オーバーライド:
        getBreakWeight、クラスView
        パラメータ:
        axis - View.X_AXISまたはView.Y_AXIS
        pos - 分割されたビューの開始の可能性のある位置。0以上。 これはタブ位置の計算に便利な場合がある。
        len - 分割が必要なposからの相対的な長さを指定する。0以上。
        戻り値:
        ウエイト。View.ForcedBreakWeightとView.BadBreakWeightの間の値。
        関連項目:
        LabelView, ParagraphView, View.BadBreakWeight, View.GoodBreakWeight, View.ExcellentBreakWeight, View.ForcedBreakWeight
      • breakView

        public View breakView​(int axis,
                              int p0,
                              float pos,
                              float len)
        指定された軸および指定された長さでこのビューを分割します。 このメソッドは、空白文字の位置で分割するために実装されており、末尾に空白文字を持つフラグメントを返します。 空白文字の位置が見つからない場合は、もっとも近い文字を使います。
        オーバーライド:
        breakView、クラスView
        パラメータ:
        axis - View.X_AXISまたはView.Y_AXIS
        p0 - フラグメントの表示を開始するモデル内の位置>= 0。
        pos - 分割されたビューが占める軸に沿った位置>= 0。 これはタブの計算などで便利な場合がある。
        len - 分割が必要な軸に沿った距離>= 0。
        戻り値:
        ビューが分割できる場合は、指定されたスパンを表すビューのフラグメント。 ビューが分割動作をサポートしていない場合は、ビュー自体が返される。
        関連項目:
        View.breakView(int, int, float, float)
      • createFragment

        public View createFragment​(int p0,
                                   int p1)
        要素の一部分を表すビューを作成します。 フォーマットの操作中に、ビューの各フラグメントを測定するために使います。 ビューがフラグメント化をサポートしない場合(これがデフォルト)は、ビュー自身が返されます。

        このビューは、フラグメント化をサポートしています。 この実装により、このビューの状態を共有する、ビューの一部分だけを表す入れ子になっているクラスを返すことができます。

        オーバーライド:
        createFragment、クラスView
        パラメータ:
        p0 - 開始オフセット。0以上。 要素の開始オフセットに等しいか、それより大きい値で、要素の終了オフセットより小さい値にする。
        p1 - 終了オフセット。p0より大きい。 要素の開始オフセットより大きく、要素の終了オフセットに等しいか、それより小さい値にする。
        戻り値:
        ビューのフラグメント。ビューがフラグメントへの分割をサポートしない場合はビュー自体
        関連項目:
        LabelView
      • getNextVisualPositionFrom

        public int getNextVisualPositionFrom​(int pos,
                                             Position.Bias b,
                                             Shape a,
                                             int direction,
                                             Position.Bias[] biasRet)
                                      throws BadLocationException
        キャレットが配置される可能性のある、視覚的に表された次のモデル位置を決定する手段を提供します。 ビューによっては、可視ではないか、モデル内と同じ順序でないか、またはモデル内の一部の位置へのアクセスを許可しない場合があります。 このメソッドを使用すると、0以上の範囲内で変換する位置を指定できます。 値が-1の場合は、位置が自動的に計算されます。 値が-1よりも小さい場合は、BadLocationExceptionがスローされます。
        オーバーライド:
        getNextVisualPositionFrom、クラスView
        パラメータ:
        pos - 変換対象の位置
        a - 描画するために割り当てられた領域
        direction - 現在位置からの方向。これは、キーボードに通常存在する矢印キーと見なすことができ、 SwingConstants.WEST、SwingConstants.EAST、SwingConstants.NORTH、またはSwingConstants.SOUTHになる。
        b - バイアス
        biasRet - 戻りバイアス
        戻り値:
        次の可視の位置をもっともよく表すモデル内の位置。
        例外:
        BadLocationException - 指定された位置がドキュメント内の有効な位置でない場合
        IllegalArgumentException - 方向が無効な場合