1

無効にできるボタンを備えたGUIを作成しました。ボタンが無効になると、テキストの色が灰色に変わります。私のコンピューターではすべて正常に動作しますが、別のコンピューターで試してみました (どちらも win 7 です。もう一方のコンピューター (エラーが発生した場所) にはタッチスクリーンがあり、これが問題を引き起こす可能性があるかどうかわかりません。私のコンピューターでは Java 6 を使用しています)。問題のコンピューター Java 7) では、テキストの色が白のままです..! どうすればいいのかわかりません。ここにいくつかのコード、おそらくそれが役立ちます(setEnabled-methodをオーバーライドします):

@Override
public void setEnabled(boolean b)
{
    super.setEnabled(b);
    if(!this.isEnabled()){
        String text = "";
        if(!this.getText().contains("<html>")){
            text = "<html><font color=\"#797C88\">" + this.getText() + "</font></html>";
        }
        else{
            text = this.getText().replaceAll("#[a-fA-F0-9]{6}", "#797C88");
        }

        this.setText(text);
    }
    else{
        String text = "";
        if(!this.getText().contains("<html>")){
            text = "<html><font color=\"#FFFFFF\">" + this.getText() + "</font></html>";
        }
        else{
            text = this.getText().replaceAll("#[a-fA-F0-9]{6}", "#FFFFFF");
        }

        this.setText(text);
    }
}

これはカスタムのルック アンド フィールです (他の PC ではすべての画像が正常に機能しているため、ルック アンド フィールにエラーはないと思います...):

<style id="button">
    <!-- Shift the text one pixel when pressed -->
    <property key="Button.textShiftOffset" type="integer" value="2" />
    <state>
        <imagePainter method="buttonBackground" path="images/button_normal.png" sourceInsets="10 10 10 10" />
        <font name="Dialog" size="12" />
    </state>
    <state value="PRESSED">
        <imagePainter method="buttonBackground" path="images/button_normal_pressed.png" sourceInsets="10 10 10 10" />
    </state>
</style>
<bind style="button" type="region" key="Button" />

私が言ったように、私のコンピューターではこのコードは正常に動作します。もう一方はそうではありません。前もって感謝します

4

2 に答える 2

1

この Bugreportによると、HTML テキストを含む Java 7 コンポーネントを無効にすると、テキストがグレー表示されるためです。

于 2012-09-03T11:46:45.623 に答える
0

コードを使用してフォントの色を変更する代わりに:

text = "<html><font color=\"#797C88\">" + this.getText() + "</font></html>";

text = this.getText().replaceAll("#[a-fA-F0-9]{6}", "#797C88");

おそらく使用する必要があります:

this.setForeground(Color.GRAY);

テキストを白に変更するには:

this.setForeground(Color.WHITE);
于 2012-09-03T09:26:51.770 に答える