• ベストアンサー

SWING で Button? JButton?

Swing の勉強を始めました。 人のソースを読んでいると、 Button クラスと JButton クラスがあるようなのですが、これらはどう違うのでしょうか? 特に Buttonに関する資料が見つかりません。

質問者が選んだベストアンサー

  • ベストアンサー
  • liar_adan
  • ベストアンサー率48% (730/1515)
回答No.3

>JButtonはButtonの上位互換みたいなものと思って良いのでしょうか? 厳密には違いますが、だいたいはそうです。 AWTで書かれたプログラムをSwingのものに置き換えるとき、 ButtonをそのままJButtonと書き換えれば、 そのまま動作する場合が多いと思います。 ただ、クラスの継承関係の上では、違うものになっています。 その意味で、完全に上位互換というわけではありません。 #それから、Swingの動作速度ですが、 たしかに初期のSwingは「重くて遅くて使えるか!」 と言われたこともあったけれど、 実装の効率化などによって、最近はずいぶん改善されました。 嫌わないで使ってください。

white-tiger
質問者

お礼

ありがとうございます!!

その他の回答 (2)

  • ngsvx
  • ベストアンサー率49% (157/315)
回答No.2

Button と JButton に関しては、#1さんが書いたことで間違いはありません。 わたしは、補足としてAWTとSwingのことを書いておきます。 Swingの部品はAWTよりも高性能で、種類も豊富にあります。 AWTでは、ちょっと凝ったことをしようとすると、とたんに出来なくなることも しばしば。。。 逆にSwingは、「こんなの必要か?」という機能まであったりします。 また、SwingにはJTableやJTreeなどのようにコンポーネントの種類も AWTとは比べものにならない程多いです。 ただし、AWTがOSの部品をそのまま使っているのに対し、Swingは 全てJavaで作られているため、AWTに比べて動作が遅くなります。 しかし、これは最近のマシンではあまり気にならないと思います。 *AWTを「重量なコンポーネント」と言ったりしますが、 これはOSのリソースを使うという意味で「重量な」ものです。

  • liar_adan
  • ベストアンサー率48% (730/1515)
回答No.1

ButtonはAWTにあるボタンであり、 JButtonはSwingにあるボタンです。 一般的に、AWTの部品とSwingの部品を混在して使うのはよくないので、 Swingを使うのであれば通常はJButtonを使います。 プログラム側からしてみると、ButtonもJButtonも 基本的なところではかわりありません。 ActionListenerを登録するとそれが実行されるという使い方です。 ただ、AWTのButtonではImageIcon表示ができないなどの違いがあります。 SwingのJButtonの方が細かい点で高性能になっています。

white-tiger
質問者

お礼

ありがとうございます!AWTだったのですね。 一つ質問させて下さい。 調べてみると、 「Swing コンポーネントは AWT を継承した軽量コンポーネント郡」 と書いてあるのですが、JButtonはButtonの上位互換みたいなものと思って良いのでしょうか?

関連するQ&A