首先贴上我的程序,高手请勿笑,刚学几天而已package demo.swing;import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;public class LoginDemo
{ private static final String backgroundUrl="scroll.jpg";
private int width=100;
private int height=100;
/**
* @param args
*/
public static void main(String[] args)
{
new LoginDemo();
}
public LoginDemo()
{
JFrame jf=new JFrame("登陆页面");
jf.addWindowListener(new WindowAdapter()
{
@Override
public void windowClosing(WindowEvent arg0)
{
System.exit(0);
}
});
JPanel bg=getBackGroud();
bg.setBounds(0, 0, width, height);
JPanel login=getLoginWindow();
login.setBounds(0, 0, width, height);
jf.getLayeredPane().setLayout(null);
jf.getLayeredPane().add(bg,-1);
jf.setContentPane(login);
login.setOpaque(true);
jf.setSize(width, height);
jf.setVisible(true);
}
/**
* 获得背景
* @return
*/
private JPanel getBackGroud()
{
JPanel bg=new JPanel();
ImageIcon ii=new ImageIcon(this.getClass().getResource(backgroundUrl));
JLabel jl=new JLabel(ii);
this.width=ii.getIconWidth();
this.height=ii.getIconHeight();
bg.add(jl);
return bg;
}
/**
* 获得登陆界面
* @return
*/
private JPanel getLoginWindow()
{
JPanel win=new JPanel();
// win.setBounds(0, 0, width, height);
JLabel username=new JLabel("用户名");
username.setBounds(10, 10, 60, 20);
JTextField username_input=new JTextField(10);
username_input.setBounds(80, 10, 60, 20);
JLabel password=new JLabel("密码");
password.setBounds(10, 40, 60, 20);
JPasswordField password_input=new JPasswordField(10);
password_input.setBounds(80, 60, 60, 20);
win.add(username);
win.add(username_input);
win.add(password);
win.add(password_input);
return win;
}}发现几个问题1 如果加入背景,则文字(用户名 密码)不显示出来2 无法对其进行位置的调配,我想的是分为2行显示还请高手 解答
import java.awt.event.WindowEvent;import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;public class LoginDemo
{ private static final String backgroundUrl="scroll.jpg";
private int width=100;
private int height=100;
/**
* @param args
*/
public static void main(String[] args)
{
new LoginDemo();
}
public LoginDemo()
{
JFrame jf=new JFrame("登陆页面");
jf.addWindowListener(new WindowAdapter()
{
@Override
public void windowClosing(WindowEvent arg0)
{
System.exit(0);
}
});
JPanel bg=getBackGroud();
bg.setBounds(0, 0, width, height);
JPanel login=getLoginWindow();
login.setBounds(0, 0, width, height);
jf.getLayeredPane().setLayout(null);
jf.getLayeredPane().add(bg,-1);
jf.setContentPane(login);
login.setOpaque(true);
jf.setSize(width, height);
jf.setVisible(true);
}
/**
* 获得背景
* @return
*/
private JPanel getBackGroud()
{
JPanel bg=new JPanel();
ImageIcon ii=new ImageIcon(this.getClass().getResource(backgroundUrl));
JLabel jl=new JLabel(ii);
this.width=ii.getIconWidth();
this.height=ii.getIconHeight();
bg.add(jl);
return bg;
}
/**
* 获得登陆界面
* @return
*/
private JPanel getLoginWindow()
{
JPanel win=new JPanel();
// win.setBounds(0, 0, width, height);
JLabel username=new JLabel("用户名");
username.setBounds(10, 10, 60, 20);
JTextField username_input=new JTextField(10);
username_input.setBounds(80, 10, 60, 20);
JLabel password=new JLabel("密码");
password.setBounds(10, 40, 60, 20);
JPasswordField password_input=new JPasswordField(10);
password_input.setBounds(80, 60, 60, 20);
win.add(username);
win.add(username_input);
win.add(password);
win.add(password_input);
return win;
}}发现几个问题1 如果加入背景,则文字(用户名 密码)不显示出来2 无法对其进行位置的调配,我想的是分为2行显示还请高手 解答
解决方案 »
- 各位大虾帮帮忙,帮我看看下面这个程序怎么没声音,(用myeclipse编的,工作空间有放音乐文件),再帮我看下怎么添加背景图片!谢谢了
- 知道MVC架构,可就是不会运用,烦!
- 急:java中如何实现uncode的小字节序的高低位转码?
- java输入输出的初级问题
- 急!!!JB连sqlserver时出现下列问题,高手指点啊!!!!!!!!!!!!!!!!!!!!!!!!
- 困扰了我一下午,很简单的,关于GUI事件。
- 在线等候:如何知道jTextField里的字符长度已经超出jTextFeild的长度
- 一个小applet,根本显示不了 ?
- java小问题
- 怎么设置及取得环境变量
- java线程基础问题
- JAVA JFileChooser 问题
然后login.setOpaque(true); 改成login.setOpaque(false);
试试看
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.GridLayout;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;public class LoginDemo { private static final String backgroundUrl = "scroll.jpg"; private int width = 300; private int height = 200; /**
* @param args
*/
public static void main(String[] args) {
new LoginDemo();
} public LoginDemo() {
JFrame jf = new JFrame("login"); jf.addWindowListener(new WindowAdapter() { @Override
public void windowClosing(WindowEvent arg0) {
System.exit(0);
}
}); JPanel contentPane = new ContentPane();
JPanel login = getLoginWindow(); jf.setContentPane(contentPane);
contentPane.setLayout(new BorderLayout());
contentPane.add(login, BorderLayout.CENTER);
jf.setSize(width, height);
jf.setVisible(true); } class ContentPane extends JPanel{
ImageIcon ii = new ImageIcon(this.getClass().getResource(backgroundUrl));
ContentPane(){
this.setOpaque(false);
} public void paintComponent(Graphics g){
int w = this.getWidth();
int h = this.getHeight();
g.drawImage(ii.getImage(), 0, 0, w, h, this);
super.paintComponent(g);
}
} /**
* get user interface
*
* @return
*/
private JPanel getLoginWindow() {
JPanel win = new JPanel(new GridLayout(2,1));
win.setOpaque(false); JPanel namePane = new JPanel(new FlowLayout(FlowLayout.CENTER));
namePane.setOpaque(false);
JLabel username = new JLabel("user name:");
username.setBounds(10, 10, 60, 20);
JTextField username_input = new JTextField(10);
username_input.setBounds(80, 10, 60, 20);
namePane.add(username);
namePane.add(username_input); JPanel pwdPane = new JPanel(new FlowLayout(FlowLayout.CENTER));
pwdPane.setOpaque(false);
JLabel password = new JLabel("password:");
password.setBounds(10, 40, 60, 20);
JPasswordField password_input = new JPasswordField(10);
password_input.setBounds(80, 60, 60, 20);
pwdPane.add(password);
pwdPane.add(password_input); win.add(namePane);
win.add(pwdPane);
return win;
}}