1

主にOCDが原因で、非常に恣意的なことをしていますが、簡単に言うと、JButtonの非同期更新を削除し、ボタンを変更する必要があるときに repaint() を呼び出したいと思います。

JButton が実装する上書きされた imageUpdate メソッドを上書きする以外に、これを行う方法はありますか? 課題に取り組んでおり、限られた数のファイルしか提出できません。

私はどんな応答にも感謝します:)

これは宿題であり、不正行為やコピーペーストに対するかなり厳しい規制がある非常に大規模なクラスに所属しているため、サンプル コードを投稿することに不安を感じています。仮説に基づいた答えがあればいいのに!助けてくれてありがとう。

4

2 に答える 2

0

通常、コンポーネントの描画を制御したい場合は、次のようにpaintComponentをオーバーライドする必要があります。

new javax.swing.JButton(){
    @Override
    protected void paintComponent(Graphics g){
        super.paintComponent(g);
        // things you want to do here
    }
};

より詳細な制御を行うには、への呼び出しを無視できます。

super.paintComponent(g);

ただし、そのためには、

opaque プロパティを尊重する必要があります。つまり、このコンポーネントが不透明な場合は、不透明でない色で背景を完全に塗りつぶす必要があります。opaque プロパティを尊重しないと、視覚的なアーティファクトが表示される可能性があります。

Java API doc に記載されているとおりです。

于 2013-04-12T22:28:40.390 に答える
0

JLabel や JPanel、または JButton でそれらのいずれかを使用できる場合は、そうすることを強くお勧めします。

ステータスの更新に関しては、JButton は信頼できません。

JButton の使用が絶対に必要な場合は、JButton から何を作りたいかを詳しく説明していただけますか?

于 2013-04-12T21:27:55.627 に答える