gpt4 book ai didi

java - 隐形图形用户界面? (Java)( Swing )

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:30:02 25 4
gpt4 key购买 nike

我正在使用 swing 编写这个程序。每次我导出程序并运行它时,我尝试设置的 GUI 都没有出现。 JFrame 有,但内部组件没有。提前致谢 ~Airis

代码:

import java.awt.Graphics2D;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.*;

public class Login {
public static void login_Interface(){

//Start GUI style//
try {
UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
} catch (ClassNotFoundException e1) {
e1.printStackTrace();
} catch (InstantiationException e1) {
e1.printStackTrace();
} catch (IllegalAccessException e1) {
e1.printStackTrace();
} catch (UnsupportedLookAndFeelException e1) {
e1.printStackTrace();
}
// End //

JFrame login_Frame = new JFrame("Login - LetsMeet");
login_Frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
login_Frame.setSize(750, 650);
login_Frame.setResizable(true);

JPanel panel_Title = new JPanel(); //PANEL Title
panel_Title.setBounds(0, 0, 750, 150);
panel_Title.setLayout(null);
Image logo = null;
try {
logo = ImageIO.read(new File("Data/images/logo_letsmeet.png"));
} catch (IOException e) {
e.printStackTrace();
}
Graphics2D logo_out = ((BufferedImage) logo).createGraphics();
panel_Title.paint(logo_out);

JPanel login_Panel = new JPanel(); //LOGIN Panel
login_Panel.setBounds(0, 150, 350, 150);
login_Panel.setLayout(null);
JTextField username_login = new JTextField("Username");
username_login.setBounds(100, 50, 100, 25);
JPasswordField password_login = new JPasswordField();
password_login.setBounds(200, 50, 100, 25);
JButton login_go = new JButton("Login");
login_go.setBounds(200, 50, 100, 25);
login_Panel.add(password_login);
login_Panel.add(username_login);


JPanel panel_Divider = new JPanel(); //PANEL Divider
login_Panel.setBounds(350, 150, 50, 150);
panel_Divider.setSize(50, 100);
panel_Divider.setLayout(null);
Image sep = null;
try {
sep = ImageIO.read(new File("Data/images/sep.png"));
} catch (IOException e) {
e.printStackTrace();
}
Graphics2D div = ((BufferedImage) sep).createGraphics();
panel_Title.paint(div);

JPanel register_Panel = new JPanel(); //REGISTER Panel
register_Panel.setBounds(400, 150, 350, 150);
register_Panel.setLayout(null);

login_Frame.add(panel_Title);
login_Frame.add(login_Panel);
login_Frame.add(panel_Divider);
login_Frame.add(register_Panel);
login_Frame.setVisible(true);
}
}

错误:无

最佳答案

首先……

panel_Title.paint(logo_out);这不是图形在 Swing 中的工作方式......也不是图像在 Swing 中的绘制方式

其次......

您应该使用布局管理器,它们将大大减少潜在问题并降低代码的复杂性。

第三

您的应用程序应该在事件调度线程的上下文中启动...

public static void main(String args[]) {
EventQueue.invokeLater(new Runnable() {
public void run() {
// Construct your UI here...
}
});
}

第四

正如 Andrew 还指出的那样 (+1)...您的图像“看起来”是内部资源,无法通过 File 引用访问。您需要以不同方式加载这些类型的(嵌入式)资源...

logo = ImageIO.read(Login.class.getResource("/Data/images/logo_letsmeet.png"));

您还忽略了这些资源可能为 null 的可能性,这是一种非常危险的做法。

我建议你通读一遍

关于java - 隐形图形用户界面? (Java)( Swing ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13813032/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com