4

誰かがこのコードを見て、私が間違っていることを教えてもらえますか? 画像がまったく表示されません。それらは同じパッケージに入っています。

ありがとう

    public class MWindow31Pic extends JFrame implements ActionListener{
       private JPanel contPane = (JPanel) this.getContentPane();
       private JButton button = new JButton(new ImageIcon("open.jpg"));
       boolean clicked = false;

    public MWindow31Pic(String title){
      super(title);
      this.build();
    }

    public void actionPerformed(ActionEvent event){
       if (! clicked) {
          button.setIcon(new ImageIcon("close.jpg"));
          //button.setText("You clicked ME!!!!"); 
          clicked = true;
       }
       else{
          button.setIcon(new ImageIcon("open.jpg"));
          //button.setText("Click Me"); 
          clicked = false;
       }
    }

    public void build(){
        // adding JComponents
        contPane.add(button);
        button.addActionListener(this);

       // JFrame settings    
       this.setResizable(false);
       this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       this.setLocationRelativeTo(null);
       this.setSize(240,188);
       this.setVisible(true);
    }
   }
4

1 に答える 1

4

次のように ImageIcon を作成する必要があります。

new ImageIcon ( MWindow31Pic.class.getResource ( "close.jpg" ) )

あなたのやり方で:

new ImageIcon ( "close.jpg" )

image は、呼び出し元のクラス パッケージ内ではなく、アプリケーションの作業ディレクトリ内にある必要があります。

画像を別のフォルダーに移動することもできます。

new ImageIcon ( MWindow31Pic.class.getResource ( "images/close.jpg" ) )
于 2012-08-17T09:57:00.753 に答える