swing jlabel 加背景图片 做出frame添加背景图片效果

//原理很简单,大家知道早Jlabel很容易添加背景图片,这个例子就是把一个JLabel放到一个Frame里,把它铺满,再加上图片,然后所有的组件都加到这个JLabel上,就回出现给Frame加上了背景图片的效果。(因为Frame没有添加背景图片的函数,所以没法加,只能靠其他办法)

package model;

import java.awt.*;

import javax.swing.*;
import java.awt.event.*;

public class TestImageWindow extends JFrame {
JLabel topLabel;
JLabel userNameLabel, passwordLabel;
JTextField userNameTextField;
JPasswordField passwordField;
JButton exitButton, loginButton;

public TestImageWindow() {
super("欢迎登录");
topLabel = new JLabel();
//topLabel.setIcon(new ImageIcon("/im/1.jpg"));
topLabel.setIcon(new ImageIcon(Toolkit.getDefaultToolkit().getImage(getClass().getResource("/im/1.jpg"))));
add(topLabel);
topLabel.setLayout(null);

userNameLabel = new JLabel("用户名:");
userNameLabel.setForeground(Color.WHITE);
passwordLabel = new JLabel("密 码:");
userNameTextField = new JTextField(20);
passwordField = new JPasswordField(20);
exitButton = new JButton("退 出");
loginButton = new JButton("登 录");

ButtonListener bListener = new ButtonListener();
// 按钮注册事件监听器
exitButton.addActionListener(bListener);
loginButton.addActionListener(bListener);
userNameTextField.addActionListener(bListener);
passwordField.addActionListener(bListener);

MyKeyListener keylis = new MyKeyListener();
userNameTextField.addKeyListener(keylis);
passwordField.addKeyListener(keylis);

userNameLabel.setSize(45, 20);
userNameLabel.setLocation(40, 280);
topLabel.add(userNameLabel);

userNameTextField.setSize(50, 20);
userNameTextField.setLocation(85, 280);
topLabel.add(userNameTextField);

passwordLabel.setSize(40, 20);
passwordLabel.setLocation(140, 280);
topLabel.add(passwordLabel);

passwordField.setSize(50, 20);
passwordField.setLocation(195, 280);
topLabel.add(passwordField);

exitButton.setSize(80, 20);
exitButton.setLocation(260, 280);
topLabel.add(exitButton);

loginButton.setSize(80, 20);
loginButton.setLocation(350, 280);
topLabel.add(loginButton);

setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setSize(500, 350);
setVisible(true);
}

private void checkNamePwd() {
String userName = userNameTextField.getText().trim();
String pw = passwordField.getText();
if (userName.length() == 0) {
JOptionPane.showMessageDialog(null, "用户名不能为空!");
} else if (pw.length() == 0) {
JOptionPane.showMessageDialog(null, "密码不能为空!");
} else {
JOptionPane.showMessageDialog(null, "恭喜你成功登录!");
}
}

private void exitWindow() {
System.exit(0);
}

class ButtonListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
// 获取事件源
Object source = e.getSource();
if (source == exitButton) {
exitWindow();
} else if (source == loginButton) {
checkNamePwd();
}
}
}

class MyKeyListener extends KeyAdapter {
public void keyPressed(KeyEvent ke) {
int code = ke.getKeyCode();
if (code == 10) {
checkNamePwd();
} else if (code == 27) {
exitWindow();
}
}
}
public static void main(String[] kk){
TestImageWindow ww=new TestImageWindow();
ww.show();
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值