Java背景未显示
我有一个C驱动器的背景,但它没有显示,即使代码看起来很好。它可以运行,但有几个问题 1:背景不显示(你可以下载一个随机的bg.jpg文件,看看它是否有效) 2:很遗憾,文本框没有居中 3:我无法在文本框旁边显示文本,比如“用户/PW”或“欢迎”之类的Java背景未显示,java,image,swing,background,Java,Image,Swing,Background,我有一个C驱动器的背景,但它没有显示,即使代码看起来很好。它可以运行,但有几个问题 1:背景不显示(你可以下载一个随机的bg.jpg文件,看看它是否有效) 2:很遗憾,文本框没有居中 3:我无法在文本框旁边显示文本,比如“用户/PW”或“欢迎”之类的 import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Log extends JFrame { JButton b1; JLabel l1;
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?”好吧,我把它一分为二,所以我们在窗口的一半,现在我们减去文本框宽度的一半,所以我们有一半宽度到左边,一半到右边
对于用户的文本,我刚刚添加了JLabel并将其添加到面板中
图像背景我从中选择了它
我建议你多想一想你想要什么,你拥有什么,在网上搜索,因为大多数时候你的问题都有答案
无论如何,你会得到这样的结果:
(图像下隐藏了“用户”的标签,请注释void paint方法以使其显示,好吧,您可以获得背景图像和标签,所有缺少的都是修复该缺陷)
希望有帮助