1

私はまた別の本当にばかげた質問に戻ってきました。私はすでに他のスタックオーバーフローの投稿をいくつか読み、アドバイスに従おうとしましたが、役に立ちませんでした。JPanel の背景を画像に変更できません。画像を c:\ に移動しようとしたので、そうではありません。

助けてください、事前に感謝します!

ログインコード:

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.*;


public class login implements ActionListener{


    JTextField gusername;
    JTextField gpassword;
    static String username;
    static String password;

    void logini() throws IOException {

        JFrame window = new JFrame("Login");
        window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        window.setSize(300, 250);
        window.setResizable(false);
        window.setVisible(true);

        JPanel mainp = new JPanel(new GridBagLayout());
        GridBagConstraints c = new GridBagConstraints();
        window.add(mainp);



        BufferedImage myPicture = ImageIO.read(new File("c:\bgd.png"));
        JLabel picLabel = new JLabel(new ImageIcon( myPicture ));
        mainp.add( picLabel );




        c.gridx = 0;
        c.gridy = 1;
        gusername = new JTextField();
        gusername.setText("Username");
        mainp.add(gusername, c);

        c.gridx = 0;
        c.gridy = 2;
        gpassword = new JTextField();
        gpassword.setText(" password ");
        mainp.add(gpassword, c);

        c.gridx = 0;
        c.gridy = 3;
        JButton login = new JButton("Login");
        mainp.add(login, c);

        login.addActionListener(this);
        login.setActionCommand("ok");
    }


    public void actionPerformed(ActionEvent e) {
        if (e.getActionCommand().equalsIgnoreCase("ok")){
            try {
                this.username = (gusername.getText());
                this.password = (gpassword.getText());
                System.out.println("0");

            }
            catch(NumberFormatException ex){
                System.out.println("ERROR: Could not preform function: 7424");

            }
        }
    }


}

エラー:

Exception in thread "main" javax.imageio.IIOException: Can't read input file!
    at javax.imageio.ImageIO.read(Unknown Source)
    at login.logini(login.java:34)
    at Main.main(Main.java:10)
4

1 に答える 1

4

パスのバックスラッシュをエスケープします。

バックスラッシュは、文字列内の特殊なエスケープ文字です。 \bバックスラッシュや b ではなく、特殊文字です。バックスラッシュを取得するには、2 つ必要です\\

BufferedImage myPicture = ImageIO.read(new File("c:\\bgd.png"));

File.separatorCharプラットフォームに依存しないために代わりに使用することをお勧めしますが、プラットフォームに依存することC:はほとんどありません。

于 2012-07-06T18:14:45.953 に答える