加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

隐形GUI? (Java)(Swing)

发布时间:2020-12-15 05:10:10 所属栏目:Java 来源:网络整理
导读:我正在研究这个程序,使用swing.每次导出程序并运行它时,我都会尝试设置的GUI. JFrame可以,但不是内部组件.提前谢谢?艾利斯 码: import java.awt.Graphics2D;import java.awt.GridBagConstraints;import java.awt.GridBagLayout;import java.awt.Image;impor
我正在研究这个程序,使用swing.每次导出程序并运行它时,我都会尝试设置的GUI. JFrame可以,但不是内部组件.提前谢谢?艾利斯

码:

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,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,25);
        JButton login_go = new JButton("Login");
        login_go.setBounds(200,25);
        login_Panel.add(password_login);
        login_Panel.add(username_login);


        JPanel panel_Divider = new JPanel();                          //PANEL Divider
        login_Panel.setBounds(350,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);
        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);
    }
}

错误:无

解决方法

除了@MadProgammer提出的所有建议外,您还需要将控件添加到JFrame内容窗格,如下所示:

login_Frame.getContentPane().add(panel_Title);
login_Frame.getContentPane().add(login_Panel);
...

然后你的控件应该出现

更新:

运行您的实际代码,并为容器(JPanels)添加彩色边框,我得到以下内容:

panel_Title.setBorder(BorderFactory.createLineBorder(Color.BLUE));
login_Panel.setBorder(BorderFactory.createLineBorder(Color.RED));
panel_Divider.setBorder(BorderFactory.createLineBorder(Color.GREEN));
register_Panel.setBorder(BorderFactory.createLineBorder(Color.YELLOW));

基本上你的代码有布局配置问题.再次,按照@MadProgammer的建议.您可以在将来使用此边框技巧来调试布局

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读