java - 如何使用不同类的 JButton 打开新的 JFrame

标签 java swing jframe

所以我尝试让一个按钮从不同的类以及同一个类中打开 JFrame,作为不同方法的一部分,但我完全迷失了。这是代码。我第一次尝试使用按钮打开新的 JFrame 的实例是在“mal”和“fem” Action 监听器中。

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class InteractiveName {
public String name = "blank";
public String gender = "blank";
public InteractiveName()
{
    frame1();
    frame2();
    frame3();
}

public void frame1(){


    JFrame j = new JFrame("Interactive Person Identifier");
    JPanel p = new JPanel(new GridBagLayout());
    JButton mal = new JButton("Male");
    JButton fem = new JButton("Female");


    j.setSize(400,400);
    j.setVisible(true);
    j.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    j.setLocationRelativeTo(null);
    GridBagConstraints c = new GridBagConstraints();

    c.insets = new Insets(40,40,40,40);

    c.gridx = -2;
    c.gridy = 0;
    p.add(mal,c);

    c.gridx = 2;
    c.gridy = 0;
    p.add(fem,c);

    mal.addActionListener(new ActionListener(){

        public void actionPerformed(ActionEvent e){
            gender = "male";

        }



    });

    fem.addActionListener(new ActionListener(){

        public void actionPerformed(ActionEvent e){
            gender = "female";
            j2.setVisible(true);


        }



    });

    j.add(p, BorderLayout.SOUTH);
}

public void frame2(){

    JFrame j2 = new JFrame("Interactive Person Identifier");
    JPanel p2 = new JPanel(new GridBagLayout());
    JButton conf = new JButton("Confirm");
    JTextField nameinput = new JTextField();



    j2.setVisible(false);
    j2.setSize(400, 400);
    j2.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    j2.setLocationRelativeTo(null);
    GridBagConstraints c2 = new GridBagConstraints();


    c2.insets = new Insets(40,40,40,40);

    j2.add(p2, BorderLayout.SOUTH);

    c2.gridx = 0;
    c2.gridy = 2;       
    p2.add(nameinput, c2);

    c2.gridx = 0;
    c2.gridy = 0;
    p2.add(conf,c2);

    conf.addActionListener(new ActionListener(){

        public void actionPerformed(ActionEvent ae){

             name = nameinput.getText();


        }



    });




}


public void frame3(){

    JFrame f3 = new JFrame("Confirmation");
    JPanel p3 = new JPanel(new GridBagLayout());
    JButton yes = new JButton("Yes");
    JButton no = new JButton("No");
    JLabel thankyou = new JLabel("Thank you for your participation. Is the above information correct?");
    JLabel info = new JLabel("You are a " + gender + ". You name is "+name+".");

    f3.setVisible(false);
    f3.setSize(400,400);
    f3.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    f3.setLocationRelativeTo(null);
    f3.add(p3);


    GridBagConstraints c3 = new GridBagConstraints();

    c3.insets = new Insets(40,40,40,40);

    c3.gridx = -3;
    c3.gridy = -2;
    p3.add(yes,c3);

    yes.addActionListener(new ActionListener(){

        public void actionPerformed( ActionEvent aae){

            JOptionPane.showMessageDialog(null, "This program is over");
            System.exit(0);
        }

    });

    no.addActionListener(new ActionListener(){


        public void actionPerformed(ActionEvent aeeee){

            JOptionPane.showMessageDialog(null, "You're an idiot, have fun starting over.");
            System.exit(0);


        }

    });


    c3.gridx = -3;
    c3.gridy = 2;
    p3.add(no,c3);

    c3.gridx = 0;
    c3.gridy = 0;
    p3.add(info,c3);

    c3.gridx = 0;
    c3.gridy = -1;
    p3.add(thankyou,c3);


}






}

最佳答案

从同一类初始化 JFrame 的一种方法:

import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;

public class Try extends JFrame implements ActionListener{

    JButton button=new JButton("Button");
    public Try(){
      setLayout(new FlowLayout());
      button.addActionListener(this);
      add(button);
    }

public void actionPerformed(ActionEvent event){
    JFrame newFrame=new JFrame();
    newFrame.setVisible(true);
    newFrame.setSize(new Dimension(500,400));
    }

public static void main(String[] args) {

    Try t=new Try();
    t.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    t.setVisible(true);
    t.setSize(new Dimension(500,400));  
 }

}

您可以在第一帧中的按钮上添加一个 Action 监听器,并在actionPerformed方法内初始化另一个帧。谢谢。

关于java - 如何使用不同类的 JButton 打开新的 JFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27579592/

相关文章:

java 如何在JTable中添加WaterMark

java - 更新我的 JFrame 时遇到问题

java - 如何获取 JInternalFrame 的 JFrame(父级)?

java - java中如何检查字符串是否加密?

java - 是否可以仅对 JTextpane 的一部分进行着色?

java - 如何自动将 SVN 提交消息和修订编号添加到 java 文件?

java - 删除jsf spring hibernate primefaces集成中的一行

java - 为所有窗口管理器编写正确的 JFrame

java - 具有组件固定宽度和高度的 GridLayout?

java - 在 JFrame 上画一条线