关于设置图片为JFrame背景的问题 图片始终无法显示

Surrin1999 2018-05-08 11:55:31

package 数据库实际应用;

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.*;
import java.io.File;

import javax.swing.*;
//窗体类
public class MainWindow extends JFrame implements ActionListener{
private static final long serialVersionUID = 1L;
RegisterAndLoginView view;
JButton computerButton;
MainWindow(){
setBounds(100,100,800,260);
view = new RegisterAndLoginView();
computerButton = new JButton("是兄弟就来砍我");
computerButton.addActionListener(this);
JPanel p = (JPanel)this.getContentPane();
ImageIcon i = new ImageIcon("123.jpg");
JLabel Logo = new JLabel(i);
this.getLayeredPane().add(Logo, new Integer(Integer.MIN_VALUE));
Logo.setBounds(0,0,i.getIconWidth(), i.getIconHeight());
this.getContentPane().add(view,BorderLayout.CENTER);
this.getContentPane().add(computerButton,BorderLayout.NORTH);
p.setOpaque(false);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setVisible(true);
}
public void actionPerformed(ActionEvent e) {
if(view.isLoginSuccess() == false) {
JOptionPane.showMessageDialog(null, "请登录","登录提示",JOptionPane.WARNING_MESSAGE);
}
else {
try
{File file = new File("C:\\Program Files\\internet explorer","iexplore.exe www.tanwan.com/?cplaceid=1428_17443");
Runtime ce = Runtime.getRuntime();
ce.exec(file.getAbsolutePath());
}
catch(Exception ee) {System.out.println(ee.getMessage());}
}
}
public static void main(String[] args) {
MainWindow win = new MainWindow();
win.setTitle("贪玩蓝月启动器");
}
}


好吧 贪玩蓝月不是重点 重点是为什么我把ContentPane设置为透明后 放置在LayeredPane的图片仍然无法显示出来?RegisterAndLoginView是一个集成视图(集成了两个面板的面板)不用理 参考了网上许多博客 说是还要设置LayeredPane为绝对布局 但是这样直接什么都无法显示了 真的蛋疼 求高手指教
...全文
656 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
是不是RegisterAndLoginView把图片覆盖了?我不添加RegisterAndLoginView是能显示的。。。你也可以这样试试看,,,
Surrin1999 2018-05-09
  • 打赏
  • 举报
回复
有人会吗
Surrin1999 2018-05-09
  • 打赏
  • 举报
回复
有人会吗???
Surrin1999 2018-05-09
  • 打赏
  • 举报
回复
引用 7 楼 lye2000000_super 的回复:
view.setBackground(null); view.setOpaque(false); this.getContentPane().add(view,BorderLayout.CENTER); 这样就可以了。哪个视图都不要紧的
我已经知道怎么回事了 是都要设置为绝对布局再setBounds的 不然默认会覆盖整个面板导致遮住图片 分数全给你
  • 打赏
  • 举报
回复
view.setBackground(null); view.setOpaque(false); this.getContentPane().add(view,BorderLayout.CENTER); 这样就可以了。哪个视图都不要紧的
Surrin1999 2018-05-09
  • 打赏
  • 举报
回复
引用 4 楼 lye2000000_super 的回复:
是不是RegisterAndLoginView把图片覆盖了?我不添加RegisterAndLoginView是能显示的。。。你也可以这样试试看,,,
发错了 集成视图是这个

package 数据库实际应用;

import javax.swing.*;
import java.awt.*;
//集成视图
public class RegisterAndLoginView extends JPanel{
   private static final long serialVersionUID = 1L;
   JTabbedPane  p;
   RegisterView registerView;
   LoginView    loginView;
   public RegisterAndLoginView(){
	            registerView = new RegisterView();
	            loginView    = new LoginView(); 
	            setLayout(new FlowLayout());
	            p = new JTabbedPane();
	            p.add("注册", registerView) ;
	            p.add("登录", loginView);
	            
	            p.validate();
	            add(p,BorderLayout.CENTER);
   }
   public boolean isLoginSuccess() {
	            return loginView.isLoginSuccess();
   }
}
Surrin1999 2018-05-09
  • 打赏
  • 举报
回复
引用 4 楼 lye2000000_super 的回复:
是不是RegisterAndLoginView把图片覆盖了?我不添加RegisterAndLoginView是能显示的。。。你也可以这样试试看,,,
试了下 确实可以 但这怎么办 我的登录界面(那个类)也要显现出来啊

package 数据库实际应用;

import javax.swing.*;
import java.awt.event.*;
//注册视图
public class RegisterView extends JPanel implements ActionListener{
   private static final long serialVersionUID = 1L;
   Register       register;
   JTextField 	  inputID,inputBirth;
   JPasswordField inputPassword;
   JButton        buttonRegister;
   RegisterView(){
	   			  register 		 = new Register();
	   			  inputID  		 = new JTextField(12); 
	   			  inputPassword = new JPasswordField(12);
	   			  inputBirth	 = new JTextField(12);
	   			  buttonRegister = new JButton("注册");
	   			  add(new JLabel("ID:"));
	   			  add(inputID);
	   			  add(new JLabel("密码"));
	   			  add(inputPassword);
	   			  add(new JLabel("出生日期(****-**-**)"));
	   			  add(inputBirth);
	   			  add(buttonRegister);
	   			  buttonRegister.addActionListener(this);
   }
   public void actionPerformed(ActionEvent e) {
      register.setID(inputID.getText());
	  char []pw = inputPassword.getPassword(); 
	  register.setPassword(new String(pw)); 
	  register.setBitrh(inputBirth.getText());
	  HandleInsertData handleRegister = new HandleInsertData();
	  handleRegister.writeRegisterModel(register);
   }
}
Surrin1999 2018-05-08
  • 打赏
  • 举报
回复
求高手解答 困扰到现在仍无法解决

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧