希望通りの動作はしてくれるんですが、
「終了ボタンの表示」 と 「終了ボタンの非表示」
ボタンを押すとコマンドプロンプトに大量のエラー文が出てきて困っています。
ご指導よろしくお願いいたします。
java
1import java.awt.*; 2import java.awt.event.*; 3import javax.swing.*; 4 5class MyGlassPane extends MyMenuFrame02 implements ActionListener{ 6 7 private JLabel label1; 8 private JButton dispButton; 9 private JButton exitButton; 10 11 private JPanel gPane; 12 13 private JPopupMenu popupMenu = new JPopupMenu( "ポップアップメニュー" ); 14 private JMenuItem popCopyItem = new JMenuItem( "コピー" ); 15 private JMenuItem popPrintItem = new JMenuItem( "印刷" ); 16 private JMenuItem popExitItem = new JMenuItem( "<html><font color=red>終了" ); 17 18 MyGlassPane(String title){ 19 super(title); 20 21 label1 = new JLabel( new ImageIcon( "BAnetwork.jpg" ) ); 22 add( label1, BorderLayout.CENTER ); // イメージを中央に貼り付ける 23 24 dispButton = new JButton( "終了ボタンの表示" ); // 「表示」ボタン 25 dispButton.addActionListener( this ); // リスナーの登録 26 add( dispButton, BorderLayout.SOUTH ); // フレームの下部に貼り付ける 27 28 exitButton = new JButton( "終了" ); // 「終了」ボタン 29 exitButton.addActionListener( this ); // リスナーの登録 30 31 gPane = (JPanel)this.getGlassPane(); // グラスペインを取り出す 32 add( gPane, BorderLayout.NORTH ); 33 gPane.add( exitButton ); // 「終了」ボタンをグラスペインに貼り付ける 34 35 pack(); 36 37 popupMenu.add( popCopyItem ); 38 popupMenu.add( popPrintItem ); 39 popupMenu.addSeparator(); 40 popupMenu.add( popExitItem ); 41 42 popCopyItem.addActionListener( this ); 43 popPrintItem.addActionListener( this ); 44 popExitItem.addActionListener( this ); 45 46 addMouseListener( new PopupMenuListener() ); 47 } 48 49 public void actionPerformed( ActionEvent e ){ 50 JButton jbtn; 51 String name = e.getActionCommand(); // ボタンのテキストを取得する 52 53 if( name.equals( "終了ボタンの表示" ) ){ // 「表示」ボタンが押されたら 54 jbtn = (JButton)e.getSource(); // イベントからJButtonのオブジェクトを取得 55 jbtn.setText( "終了ボタンの非表示" ); // そのボタンのテキストを「非表示」にする 56 gPane.setVisible( true ); // グラスペインを可視にする 57 }else if( name.equals( "終了ボタンの非表示" ) ){ // 「非表示」ボタンが押されたら 58 jbtn = (JButton)e.getSource(); // イベントからJButtonのオブジェクトを取得 59 jbtn.setText( "終了ボタンの表示" ); // そのボタンのテキストを「表示」にする 60 gPane.setVisible( false ); // グラスペインを非可視にする 61 }else if( name.equals( "終了" ) ) // 「終了」ボタンが押されたら 62 System.exit( 0 ); 63 64 JMenuItem selectedItem = (JMenuItem)e.getSource(); 65 if( selectedItem == popCopyItem ) 66 System.out.println( "ポップアップの「コピー」アイテムが押された" ); 67 else if( selectedItem == popPrintItem ) 68 System.out.println( "ポップアップの「印刷」アイテムが押された" ); 69 else if( selectedItem == popExitItem ){ 70 System.out.println( "ポップアップの「終了」アイテムが押された" ); 71 System.exit( 0 ); 72 } 73 else 74 super.actionPerformed( e ); // スーパークラスのハンドラに処理を任せる 75 76 77 } 78 79 class PopupMenuListener extends MouseAdapter { 80 81 public void mousePressed( MouseEvent e ){ 82 if( e.isPopupTrigger() ) 83 popupMenu.show( e.getComponent(), e.getX(), e.getY() ); 84 } 85 public void mouseReleased( MouseEvent e ){ 86 if( e.isPopupTrigger() ) 87 popupMenu.show( e.getComponent(), e.getX(), e.getY() ); 88 } 89 } 90 91 public static void main( String [] args ) 92 { 93 MyGlassPane f = new MyGlassPane("MyGlassPane"); 94 f.setVisible( true ); 95 } 96} 97 98
回答2件
あなたの回答
tips
プレビュー