java - 在 Java swing 中制作第二个框架

标签 java swing frame frames

我使用 Eclipse 在 Java swing 中制作了一张简单的数字名片,我对 Java 和一般编程都是全新的,所以请耐心等待。基本上我想做的是添加一个按钮,例如“我们的工作”或“作品集”,单击该按钮将打开一个新窗口,然后我可以在其中添加图片或链接或虚假评论等。

我知道这可能很简单,但是当它基于其他人的代码时,我很难理解很多教程。

package dbuscard;

import java.awt.EventQueue;

import javax.swing.JFrame;
import java.awt.Color;
import javax.swing.JLabel;
import javax.swing.ImageIcon;
import java.awt.Font;
import javax.swing.JSeparator;

public class card {

    private JFrame frame;

    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    card window = new card();
                    window.frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the application.
     */
    public card() {
        initialize();
    }

    /**
     * Initialise the contents of the frame.
     */
    private void initialize() {
        frame = new JFrame();
        frame.getContentPane().setBackground(new Color(153, 204, 255));
        frame.setBounds(100, 100, 450, 300);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().setLayout(null);

        JLabel lblLogo = new JLabel("");
        lblLogo.setBounds(127, 11, 219, 104);
        frame.getContentPane().add(lblLogo);
        lblLogo.setIcon(new ImageIcon("Images\\zlogoimg.png")); 

        JLabel lblNewLabel = new JLabel("t: 01254 777494");
        lblNewLabel.setFont(new Font("Source Code Pro Light", Font.PLAIN, 11));
        lblNewLabel.setBounds(20, 187, 126, 14);
        frame.getContentPane().add(lblNewLabel);

        JLabel lblEApexuxdesigngmailcom = new JLabel("e: apexuxdesign@gmail.com");
        lblEApexuxdesigngmailcom.setFont(new Font("Source Code Pro Light", Font.PLAIN, 11));
        lblEApexuxdesigngmailcom.setBounds(20, 204, 200, 14);
        frame.getContentPane().add(lblEApexuxdesigngmailcom);

        JLabel lblVisitWebsite = new JLabel("visit website");
        lblVisitWebsite.setFont(new Font("Source Code Pro Light", Font.BOLD, 11));
        lblVisitWebsite.setBounds(10, 237, 117, 14);
        frame.getContentPane().add(lblVisitWebsite);

        JLabel facebook = new JLabel("");
        facebook.setBounds(282, 204, 64, 47);
        frame.getContentPane().add(facebook);
        facebook.setIcon(new ImageIcon("Images\\facebook.png"));

        JLabel twitter = new JLabel("");
        twitter.setBounds(320, 204, 72, 47);
        frame.getContentPane().add(twitter);
        twitter.setIcon(new ImageIcon("Images\\twitter.png"));

        JLabel youtube = new JLabel("");
        youtube.setBounds(356, 204, 68, 47);
        frame.getContentPane().add(youtube);
        youtube.setIcon(new ImageIcon("Images\\youtube.png"));

        JLabel lblSeanHutchinson = new JLabel("Sean Hutchinson");
        lblSeanHutchinson.setFont(new Font("Source Code Pro Light", Font.PLAIN, 11));
        lblSeanHutchinson.setBounds(20, 128, 126, 14);
        frame.getContentPane().add(lblSeanHutchinson);

        JLabel lblUxDesigner = new JLabel("UX Designer");
        lblUxDesigner.setFont(new Font("Source Code Pro Light", Font.PLAIN, 11));
        lblUxDesigner.setBounds(20, 145, 107, 14);
        frame.getContentPane().add(lblUxDesigner);

    JLabel lblNewLabel_1 = new JLabel("CEO - Apex UX Design");
        lblNewLabel_1.setFont(new Font("Source Code Pro Light", Font.PLAIN, 11));
        lblNewLabel_1.setBounds(20, 162, 158, 14);
        frame.getContentPane().add(lblNewLabel_1);


    }
}

最佳答案

简单。添加一个在单独的 JFrame 上使用方法 setVisible(true); 的操作监听器。示例代码:

package com.nonsense;

导入 java.awt.event.ActionEvent;
导入 java.awt.event.ActionListener;

导入 javax.swing.JButton;
导入 javax.swing.JFrame;

公共(public)课德尔{

私有(private) JFrame 框架,frame2;


/**
 * 启动应用程序。
 */
公共(public)静态无效主(字符串[] args){
    del 窗口 = new del();
    window.frame.setVisible(true);
}

/**
 * 创建应用程序。
 */
公共(public)德尔(){
    初始化();
}

/**
 * 初始化框架的内容。
 */
私有(private)无效初始化(){
    框架=新的JFrame();
    框架.setBounds(100, 100, 450, 300);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.getContentPane().setLayout(null);

    Frame2 = 新的 JFrame();
    frame2.setBounds(100, 100, 450, 300);
    frame2.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    frame2.getContentPane().setLayout(null);

    JButton btnOpenWindow = new JButton("打开窗口");
    btnOpenWindow.addActionListener(new ActionListener() {
        公共(public)无效actionPerformed(ActionEvent arg0){
            frame2.setVisible(true);
        }
    });
    btnOpenWindow.setBounds(167, 118, 120, 23);
    Frame.getContentPane().add(btnOpenWindow);

}
}

我使用“DISPOSE_ON_CLOSE”,以便按下 X 按钮时第二个窗口不会终止程序。

关于java - 在 Java swing 中制作第二个框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32981056/

相关文章:

latex - 如何在Beamer中更改单个框架的页脚/边框?

cocoa - 从顶部调整 NSWindow 的大小

运行 ProcessBuilder 时的 java 问题 - 如何从外部文件获取要执行的命令?

java - Web 应用程序中的 Spring 线程

java - Spring security @PreAuthorize hasRole() 属性注入(inject)

java - 使用 ICE PDF 查看器 pdf 在内部框架内不会更改

java - JTextField 中的 Ctrl-Delete

java - jSlider 转到点击位置 - 仅在 Macintosh 上出现问题

java - 调用实时数据方法时,无法在后台线程上调用观察

ios - CGAffineTransform 改变 view.bounds?