2015-10-27 45 views
1

我尝试在我的JPanel中显示图像时遇到一些麻烦。Java ImageIcon不起作用

import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 

import javax.swing.ImageIcon; 
import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 

public class MainWindow { 

    public static JFrame mainFrame; 
    public static JPanel loginRegisterPanel; 


    public MainWindow() { 
     MainFrame(); 
     LoginRegisterPanel(); 
    } 

    public void MainFrame() { 

     mainFrame = new JFrame(); 
     mainFrame.setSize(640, 480); 
     mainFrame.setVisible(true); 
     mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     mainFrame.setResizable(false); 

    } 

    public void LoginRegisterPanel() { 

     loginRegisterPanel = new JPanel(); 
     loginRegisterPanel.setLayout(null); 
     mainFrame.add(loginRegisterPanel); 

     JButton loginButton = new JButton("Login"); 
     JButton registerButton = new JButton("Register"); 

     /*ImageIcon logoImage = new ImageIcon("Resource/logo.jpg"); 
     JLabel logoImageLabel = new JLabel(); 
     logoImageLabel.setBounds(0, 0, 640, 200); 
     logoImageLabel.setIcon(logoImage); 
     loginRegisterPanel.add(logoImageLabel); 
     */ 


     loginButton.setBounds(260, 180, 120, 50); 
     loginRegisterPanel.add(loginButton); 
     loginButton.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent e) { 
       try { 
        loginRegisterPanel.setVisible(false); 
        LoginPanel loginPanel = new LoginPanel(); 
        mainFrame.getContentPane().add(loginPanel.loginP); 
       } 
       catch (Exception ce){ 
        ce.printStackTrace(); 
       } 
      } 
     }); 
     registerButton.setBounds(260, 250, 120, 50); 
     loginRegisterPanel.add(registerButton); 

    } 

    public static void main (String[] args) { 
     MainWindow mainWindow = new MainWindow(); 
    } 
} 

如果我从我的源代码删除与ImageIcon的部分,我JPanel显示器的按钮,但如果我用ImageIcon,它不会显示任何内容。

回答

3

loginRegisterPanel.setLayout(null);
正在引发该问题。我猜想布局管理器的缺失会让Java混淆Java在何处放置它。也许你应该给一个GridLayout。