Java背景没有出现 [英] Java background not showing up

查看:166
本文介绍了Java背景没有出现的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个关于C盘的背景但是即使代码看起来很好也没有出现。它可以运行,但有一些问题。

I got a background on C drive but its not showing up even though the code looks fine. It can run but there are a couple of problems.

1:后台没有显示(你可以下载一个随机的bg.jpg文件来查看它是否有效)

1: Background doesnt show (You can download a random bg.jpg file to see if it works)

2:文本框不居中,遗憾......

2: Text boxes are not centered, sadly...

3:我无法在文本旁边显示文本框,如User / PW或Welcome等。

3: I cant get texts to show beside the text boxes, like "User / PW" or "Welcome" or something.

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

public class Log extends JFrame {
JButton b1;
JLabel l1;

public static void main(String[] args) {
Log frameTabel = new Log();
}

JButton blogin = new JButton("Login");
JPanel panel = new JPanel();
JTextField txuser = new JTextField(15);
JPasswordField pass = new JPasswordField(15);

Log(){
super("Login Autentification");
Toolkit tk = Toolkit.getDefaultToolkit();  
int xSize = ((int) tk.getScreenSize().getWidth());  
int ySize = ((int) tk.getScreenSize().getHeight());  


setSize(xSize,ySize);
setLocationRelativeTo(null);
panel.setLayout (null); 
setLayout(new BorderLayout());
JLabel background=new JLabel(new ImageIcon("C:\\bg.jpg"));
add(background);
background.setLayout(new FlowLayout());


txuser.setBounds(70,30,150,20);
pass.setBounds(70,65,150,20);
blogin.setBounds(110,100,80,20);

panel.add(blogin);
panel.add(txuser);
panel.add(pass);

getContentPane().add(panel);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
actionlogin();
}

public void actionlogin(){

    blogin.addActionListener(new ActionListener() {

    public void actionPerformed(ActionEvent ae) {

String puname = txuser.getText();
String ppaswd = pass.getText();
if(puname.equals("test") && ppaswd.equals("12345")) {
newframe regFace =new newframe();
regFace.setVisible(true);
dispose();
} else {

JOptionPane.showMessageDialog(null,"Wrong Password / Username");
txuser.setText("");
pass.setText("");
txuser.requestFocus();
}

}
});
}
}


推荐答案

这应该是你的代码:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.imageio.*;
import java.awt.Graphics;

public class Log extends JFrame {
JButton b1;
JLabel l1;
Image bgImage;
JLabel user = new JLabel("User");

JButton blogin = new JButton("Login");
JPanel panel = new JPanel();
JTextField txuser = new JTextField(15);
JPasswordField pass = new JPasswordField(15);
public static void main(String[] args) {
    Log frameTabel = new Log("bg.jpg");
}

Log(String bgImg){
    super("Login Autentification");
    Toolkit tk = Toolkit.getDefaultToolkit();  
    int xSize = ((int) tk.getScreenSize().getWidth());  
    int ySize = ((int) tk.getScreenSize().getHeight());  
    try{
        bgImage = ImageIO.read(new File(bgImg));
    }
    catch(IOException e){}

    setSize(xSize,ySize);
    setLocationRelativeTo(null);
    panel.setLayout (null); 
    setLayout(new BorderLayout());
    JLabel background=new JLabel(new ImageIcon("C:\bg.jpg"));
    add(background);
    background.setLayout(new FlowLayout());


    txuser.setBounds(Math.round(xSize/2) - 75,30,150,20);
    pass.setBounds(Math.round(xSize/2) - 75,65,150,20);
    blogin.setBounds(Math.round(xSize/2) - 40,100,80,20);

    user.setBounds(Math.round(xSize/2) - 150, 30, 50, 20);

    panel.add(user);
    panel.add(blogin);
    panel.add(txuser);
    panel.add(pass);

    getContentPane().add(panel);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setVisible(true);
}
public void paint(Graphics g){
    super.paint(g);
    g.drawImage(bgImage, 0, 0, panel);
}
}

也许你在问自己他为什么用过xSize和减去75或40?好吧,我把它分成两半,所以我们在窗口的一半,现在我们减去Textboxes宽度的一半,所以我们左边有一半宽度,右边有一半。

Maybe you're asking yourself "why did he used xSize and substracted 75 or 40?" well, I divided it in two so we're in half of the window, now we substract half of the width of Textboxes so we have half width to the left and half to the right.

对于User的文本,我刚刚添加了JLabel并将其添加到面板中。

For text of User, I just added JLabel and added it to the panel.

图像背景我从其他

我建议你多考虑一下你想要的和你拥有的东西,在网上搜索,因为大多数情况下你的问题都有答案。

I suggest you to think a bit more what you want and what you have, search in the web, 'cause there's mostly of times an answer to your questions.

无论如何你会得到这样的东西:

Anyway you'll get something like this:

(user的标签隐藏在图片下方,注释void paint方法让它显示,以及,你得到背景图片和标签,所有缺失都修复了这个bug)

(Label of "user" is hidden under the image, comment void paint method to get it to show, well, you get background image and labels, all missing is fixing that bug)

希望有所帮助

这篇关于Java背景没有出现的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆