/*
http://d...content-available-to-author-only...o.jp/qa/question_detail/q12114447672
*/
import java.awt.event.* ; //ボタン(イベント)の処理に必要
import javax.swing.* ; //GUIを使う場合に必要
//上の行でエラーが出るときは以下を書く
private static final long serialVersionUID = 1L;
JLabel label1
; //ラベルをオブジェクト変数として定義 JButton button1
; //3つのボタン:オブジェクト変数として定義 JButton button2
; //ここに書かれた変数はクラスのどこからでも使える // コンストラクタ
FrameStep4
( String title
) { //title:タイトルバーに表示する文字列 super ( title) ; //フレームを実際に作る
/*----------------------変更--------------------------*/
//setSize(450,300); //フレームサイズの設定
setSize( 450 ,350 ) ; //フレームサイズの設定
/*----------------------------------------------------*/
setDefaultCloseOperation
( JFrame .
EXIT_ON_CLOSE ) ; //[x]ボタンでフレームを閉じる setLocationByPlatform( true ) ; //開始時の表示位置はOSに任せる
setLayout( null ) ; //レイアウトなし
//ラベルの生成と配置
label1
= new JLabel ( "九州の県はどれでしょう!" ) ; label1.setBounds ( 10 ,10 , 180 , 30 ) ;
add( label1) ;
/*----追加----*/
label1= null ; //現在の仕様では、label1とは独立のlabel2を用意すべきなのですが
//フィールドをなるべく追加しないようにした為にここでnullに設定しています。
/*------------*/
//ボタンの生成と配置
button1.setBounds ( 10 , 100 , 120 , 30 ) ;
add( button1) ;
button2.setBounds ( 160 , 100 , 120 , 30 ) ;
add( button2) ;
button3.setBounds ( 310 , 100 , 120 , 30 ) ;
add( button3) ;
//ボタンが押された時のイベントをキャッチする
button1.addActionListener ( this ) ;
button2.addActionListener ( this ) ;
button3.addActionListener ( this ) ;
}
public static void main
( String [ ] args
) { //メインメソッド FrameStep4 frame = new FrameStep4( "九州の県はどれでしょう!" ) ;
frame.setVisible ( true ) ;
}
//ボタンが押されたとき(イベント発生時)に呼び出されるメソッド
//イベントから押されたらボタンを得る
String s
= b.
getText ( ) ; //ボタンのメッセージを得る System .
out .
println ( "[" + s
+ "]ボタンが押されました" ) ; //表示
/*-----変更------*/
// if(getSource() == "福岡県"){
if ( b.getText ( ) .equals ( "福岡県" ) ) {
// if(b==button1){ //現在の仕様ならばこれでもOK
/*---------------*/
/*------追加-----*/
if ( label1== null ) { //この条件のもとでaddしないとボタンを押すたびに
//リソースが消費されてしまいますので
//業務アプリの場合は確実に問題にされます
/*---------------*/
label1.setBounds ( 10 , 250 , 120 , 30 ) ;
add( label1) ;
/*------追加-----*/
repaint( 1000 ) ; //このアプリの場合に限っては実質的にupdate( getGraphics() )
//を呼び出しているだけですが
//repaintを使ったほうが良いという指導がありましたので
//これに修正します
// update( getGraphics() );
}
/*---------------*/
}
}
}
LyoKaHR0cDovL2QuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLm8uanAvcWEvcXVlc3Rpb25fZGV0YWlsL3ExMjExNDQ0NzY3MgoqLwppbXBvcnQgamF2YS5hd3QuZXZlbnQuKjsgLy/jg5zjgr/jg7PvvIjjgqTjg5njg7Pjg4jvvInjga7lh6bnkIbjgavlv4XopoEKCmltcG9ydCBqYXZheC5zd2luZy4qOyAvL0dVSeOCkuS9v+OBhuWgtOWQiOOBq+W/heimgQoKY2xhc3MgRnJhbWVTdGVwNCBleHRlbmRzIEpGcmFtZSBpbXBsZW1lbnRzIEFjdGlvbkxpc3RlbmVyIHsKCgovL+S4iuOBruihjOOBp+OCqOODqeODvOOBjOWHuuOCi+OBqOOBjeOBr+S7peS4i+OCkuabuOOBjwpwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSAxTDsKCkpMYWJlbCBsYWJlbDE7IC8v44Op44OZ44Or44KS44Kq44OW44K444Kn44Kv44OI5aSJ5pWw44Go44GX44Gm5a6a576pCkpCdXR0b24gYnV0dG9uMTsgLy/vvJPjgaTjga7jg5zjgr/jg7PvvJrjgqrjg5bjgrjjgqfjgq/jg4jlpInmlbDjgajjgZfjgablrprnvqkKSkJ1dHRvbiBidXR0b24yOyAvL+OBk+OBk+OBq+abuOOBi+OCjOOBn+WkieaVsOOBr+OCr+ODqeOCueOBruOBqeOBk+OBi+OCieOBp+OCguS9v+OBiOOCiwpKQnV0dG9uIGJ1dHRvbjM7Ci8vIOOCs+ODs+OCueODiOODqeOCr+OCvwpGcmFtZVN0ZXA0KFN0cmluZyB0aXRsZSkgeyAvL3RpdGxlOuOCv+OCpOODiOODq+ODkOODvOOBq+ihqOekuuOBmeOCi+aWh+Wtl+WIlwoJc3VwZXIodGl0bGUpOyAvL+ODleODrOODvOODoOOCkuWun+mam+OBq+S9nOOCiwovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS3lpInmm7QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgkvL3NldFNpemUoNDUwLDMwMCk7IC8v44OV44Os44O844Og44K144Kk44K644Gu6Kit5a6aCglzZXRTaXplKDQ1MCwzNTApOyAvL+ODleODrOODvOODoOOCteOCpOOCuuOBruioreWumgovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoJc2V0RGVmYXVsdENsb3NlT3BlcmF0aW9uKEpGcmFtZS5FWElUX09OX0NMT1NFKTsvL1t4XeODnOOCv+ODs+OBp+ODleODrOODvOODoOOCkumWieOBmOOCiwoJc2V0TG9jYXRpb25CeVBsYXRmb3JtKHRydWUpOyAvL+mWi+Wni+aZguOBruihqOekuuS9jee9ruOBr09T44Gr5Lu744Gb44KLCglzZXRMYXlvdXQobnVsbCk7IC8v44Os44Kk44Ki44Km44OI44Gq44GXCgkKCS8v44Op44OZ44Or44Gu55Sf5oiQ44Go6YWN572uCglsYWJlbDEgPSBuZXcgSkxhYmVsKCLkuZ3lt57jga7nnIzjga/jganjgozjgafjgZfjgofjgYbvvIEiKTsKCWxhYmVsMS5zZXRCb3VuZHMoMTAgLDEwLCAxODAsIDMwKTsKCWFkZChsYWJlbDEpOwoKLyotLS0t6L+95YqgLS0tLSovCglsYWJlbDE9bnVsbDsvL+ePvuWcqOOBruS7leanmOOBp+OBr+OAgWxhYmVsMeOBqOOBr+eLrOeri+OBrmxhYmVsMuOCkueUqOaEj+OBmeOBueOBjeOBquOBruOBp+OBmeOBjAoJCQkJLy/jg5XjgqPjg7zjg6vjg4njgpLjgarjgovjgbnjgY/ov73liqDjgZfjgarjgYTjgojjgYbjgavjgZfjgZ/ngrrjgavjgZPjgZPjgadudWxs44Gr6Kit5a6a44GX44Gm44GE44G+44GZ44CCCi8qLS0tLS0tLS0tLS0tKi8KCgkvL+ODnOOCv+ODs+OBrueUn+aIkOOBqOmFjee9rgoJYnV0dG9uMSA9IG5ldyBKQnV0dG9uKCLnpo/lsqHnnIwiKTsKCWJ1dHRvbjEuc2V0Qm91bmRzKDEwLCAxMDAsIDEyMCwgMzApOwoJYWRkKGJ1dHRvbjEpOwoJYnV0dG9uMiA9IG5ldyBKQnV0dG9uKCLls7bmoLnnnIwiKTsKCWJ1dHRvbjIuc2V0Qm91bmRzKDE2MCwgMTAwLCAxMjAsIDMwKTsKCWFkZChidXR0b24yKTsKCWJ1dHRvbjMgPSBuZXcgSkJ1dHRvbigi5qCD5pyo55yMIik7CglidXR0b24zLnNldEJvdW5kcygzMTAsIDEwMCwgMTIwLCAzMCk7CglhZGQoYnV0dG9uMyk7CgoJLy/jg5zjgr/jg7PjgYzmirzjgZXjgozjgZ/mmYLjga7jgqTjg5njg7Pjg4jjgpLjgq3jg6Pjg4Pjg4HjgZnjgosKCWJ1dHRvbjEuYWRkQWN0aW9uTGlzdGVuZXIodGhpcyk7CglidXR0b24yLmFkZEFjdGlvbkxpc3RlbmVyKHRoaXMpOwoJYnV0dG9uMy5hZGRBY3Rpb25MaXN0ZW5lcih0aGlzKTsKfQoKcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeyAvL+ODoeOCpOODs+ODoeOCveODg+ODiQoJRnJhbWVTdGVwNCBmcmFtZSA9IG5ldyBGcmFtZVN0ZXA0KCLkuZ3lt57jga7nnIzjga/jganjgozjgafjgZfjgofjgYbvvIEiKTsKCWZyYW1lLnNldFZpc2libGUodHJ1ZSk7Cn0KCi8v44Oc44K/44Oz44GM5oq844GV44KM44Gf44Go44GN77yI44Kk44OZ44Oz44OI55m655Sf5pmC77yJ44Gr5ZG844Gz5Ye644GV44KM44KL44Oh44K944OD44OJCnB1YmxpYyB2b2lkIGFjdGlvblBlcmZvcm1lZChBY3Rpb25FdmVudCBlKXsKLy/jgqTjg5njg7Pjg4jjgYvjgonmirzjgZXjgozjgZ/jgonjg5zjgr/jg7PjgpLlvpfjgosKSkJ1dHRvbiBiID0gKEpCdXR0b24pZS5nZXRTb3VyY2UoKTsKCVN0cmluZyBzID0gYi5nZXRUZXh0KCk7IC8v44Oc44K/44Oz44Gu44Oh44OD44K744O844K444KS5b6X44KLCglTeXN0ZW0ub3V0LnByaW50bG4oIlsiK3MrIl3jg5zjgr/jg7PjgYzmirzjgZXjgozjgb7jgZfjgZ8iKTsgLy/ooajnpLoKCi8qLS0tLS3lpInmm7QtLS0tLS0qLwovLwlpZihnZXRTb3VyY2UoKSA9PSAi56aP5bKh55yMIil7CglpZiggYi5nZXRUZXh0KCkuZXF1YWxzKCLnpo/lsqHnnIwiKSApewovLwlpZihiPT1idXR0b24xKXsgLy/nj77lnKjjga7ku5Xmp5jjgarjgonjgbDjgZPjgozjgafjgoLvvK/vvKsKLyotLS0tLS0tLS0tLS0tLS0qLwoKLyotLS0tLS3ov73liqAtLS0tLSovCgkJaWYobGFiZWwxPT1udWxsKXsvL+OBk+OBruadoeS7tuOBruOCguOBqOOBp2FkZOOBl+OBquOBhOOBqOODnOOCv+ODs+OCkuaKvOOBmeOBn+OBs+OBqwoJCQkJCQkvL+ODquOCveODvOOCueOBjOa2iOiyu+OBleOCjOOBpuOBl+OBvuOBhOOBvuOBmeOBruOBpwoJCQkJCQkvL+alreWLmeOCouODl+ODquOBruWgtOWQiOOBr+eiuuWun+OBq+WVj+mhjOOBq+OBleOCjOOBvuOBmQovKi0tLS0tLS0tLS0tLS0tLSovCgkJCWxhYmVsMSA9IG5ldyBKTGFiZWwoIuato+ino+OBp+OBmSIpOwoJCQlsYWJlbDEuc2V0Qm91bmRzKDEwLCAyNTAsIDEyMCwgMzApOwoJCQlhZGQobGFiZWwxKTsKLyotLS0tLS3ov73liqAtLS0tLSovCgkJCXJlcGFpbnQoMTAwMCk7CQkJLy/jgZPjga7jgqLjg5fjg6rjga7loLTlkIjjgavpmZDjgaPjgabjga/lrp/os6rnmoTjgat1cGRhdGUoIGdldEdyYXBoaWNzKCkgKQoJCQkJCQkJCQkvL+OCkuWRvOOBs+WHuuOBl+OBpuOBhOOCi+OBoOOBkeOBp+OBmeOBjAoJCQkJCQkJCQkvL3JlcGFpbnTjgpLkvb/jgaPjgZ/jgbvjgYbjgYzoia/jgYTjgajjgYTjgYbmjIflsI7jgYzjgYLjgorjgb7jgZfjgZ/jga7jgacKCQkJCQkJCQkJLy/jgZPjgozjgavkv67mraPjgZfjgb7jgZkKLy8JCQl1cGRhdGUoIGdldEdyYXBoaWNzKCkgKTsKCQl9Ci8qLS0tLS0tLS0tLS0tLS0tKi8KCX0KCn0KCgoKCgp9