当我尝试在JPanel
中显示图片时,我遇到了一些麻烦。
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
,则不会显示任何内容。
答案 0 :(得分:3)
loginRegisterPanel.setLayout(null);
造成了这个问题。我想没有布局管理器会让Java混淆在哪里放置它。你应该给一个GridLayout。