【问题标题】:connecting two java frame连接两个java框架
【发布时间】:2013-03-06 07:57:23
【问题描述】:

其实我是java新手我想知道如何链接两个框架。我做了两个不同的java文件,看起来很简单。但直到现在我都无法解决它。它应该通过单击 Enter.java 中的 Next 按钮打开欢迎框架。有人可以帮帮我吗?

这是我的代码:

Enter.java

import java.awt.FlowLayout;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

public class Enter extends JFrame {

public Enter() {
// TODO Auto-generated constructor stub

setLayout(new FlowLayout(FlowLayout.LEFT, 10, 20));

add(new JLabel("Name"));
add(new JTextField(8));
add(new JLabel("Address"));
add(new JTextField(15));
add(new JLabel("Surname"));
add(new JTextField(8));
add(new JLabel("Phone"));
add(new JTextField(8));
add(new JButton("Next"));
}


/**
 * @param args
 */
public static void main(String[] args) {
// TODO Auto-generated method stub
    Enter myProg = new Enter();
myProg.setTitle("Ceng 344 - Lab 7");
myProg.setSize(450, 400);
myProg.setLocationRelativeTo(null);
myProg.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
myProg.setVisible(true);
}

}

Welcome.java
 import java.awt.FlowLayout;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

public class welcome extends JFrame {

public welcome() {
// TODO Auto-generated constructor stub

setLayout(new FlowLayout(FlowLayout.LEFT, 10, 20));

add(new JLabel("Welcome"));
}


/**
 * @param args
 */
public static void main(String[] args) {
// TODO Auto-generated method stub
welcome myProg = new welcome();
myProg.setTitle("Ceng 344 - Lab 7");
myProg.setSize(450, 400);
myProg.setLocationRelativeTo(null);
myProg.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
myProg.setVisible(true);
}

}

【问题讨论】:

标签: java eclipse swing jframe multiple-instances


【解决方案1】:

首先

  1. 您需要将ActionListener 添加到JButton
  2. 您可以在构造函数中设置JFrame的属性。
  3. welcome.java 中不需要main(),只有`constructor 会做 它。

输入.java

import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
public class Enter extends JFrame implements ActionListener {
public Enter(){
    setLayout(new FlowLayout(FlowLayout.LEFT, 10, 20));
    add(new JLabel("Name"));
    add(new JTextField(8));
    add(new JLabel("Address"));
    add(new JTextField(15));
    add(new JLabel("Surname"));
    add(new JTextField(8));
    add(new JLabel("Phone"));
    add(new JTextField(8));
    JButton next = new JButton("Next");
    next.addActionListener(this);
    add(next);
}

public void actionPerformed(ActionEvent ae){
    //if your frame contains more than one button then you can check which button is clicked using ae.getSource() or using ae.getActionCommand()
    new Welcome();
}
public static void main(String[] args) {
    Enter myProg = new Enter();
    myProg.setTitle("Ceng 344 - Lab 7");
    myProg.setSize(450, 400);
    myProg.setLocationRelativeTo(null);
    myProg.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    myProg.setVisible(true);
}
}

//欢迎

import java.awt.FlowLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class Welcome extends JFrame {
    public Welcome() {
        setLayout(new FlowLayout(FlowLayout.LEFT, 10, 20));
        add(new JLabel("Welcome"));
        setTitle("Ceng 344 - Lab 7");
        setSize(450, 400);
        setLocationRelativeTo(null);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);
    }
}

【讨论】:

  • @user1598040 如果您在Enter.java 中进行编辑,那么它也可以工作,但我们不需要在每个java 类中实现main()。我们只是在开始类中实现main()
  • @user1598040 它显示什么错误?它在我的机器上工作
  • @user1598040 可能你需要调用new welcome(); 而不是new Welcome();,因为你的welcome java 类开始会小写
  • 在 next.addActionListener(this) 中显示错误;我尝试了欢迎和欢迎
  • 我不知道问题出在哪里,但现在可以解决了。感谢您的帮助
【解决方案2】:

如果您需要从Next 按钮调用Welcome 框架,以便您可以向该按钮添加操作。

试试这个:

import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

public class Main extends JFrame {

    public Main() {
// TODO Auto-generated constructor stub

        setLayout(new FlowLayout(FlowLayout.LEFT, 10, 20));

        add(new JLabel("Name"));
        add(new JTextField(8));
        add(new JLabel("Address"));
        add(new JTextField(15));
        add(new JLabel("Surname"));
        add(new JTextField(8));
        add(new JLabel("Phone"));
        add(new JTextField(8));
        JButton next = new JButton("Next");
        add(next);
        next.addActionListener(new java.awt.event.ActionListener() {

            public void actionPerformed(java.awt.event.ActionEvent evt) {
                NextActionPerformed(evt);
            }

            private void NextActionPerformed(ActionEvent evt) {
                welcome myProg = new welcome();
                myProg.setTitle("Ceng 344 - Lab 7");
                myProg.setSize(450, 400);
                myProg.setLocationRelativeTo(null);
                myProg.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                myProg.setVisible(true);
            }
        });



    }

    /**
     * @param args
     */
    public static void main(String[] args) {
// TODO Auto-generated method stub
        Main myProg = new Main();
        myProg.setTitle("Ceng 344 - Lab 7");
        myProg.setSize(450, 400);
        myProg.setLocationRelativeTo(null);
        myProg.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        myProg.setVisible(true);
    }
}

class welcome extends JFrame {

    public welcome() {
// TODO Auto-generated constructor stub

        setLayout(new FlowLayout(FlowLayout.LEFT, 10, 20));
        add(new JLabel("Welcome"));
    }
    /**
     * @param args
     */
}

我删除 Welcome 的 Main 类,并将其内容添加到 NextActionPerformed 方法

【讨论】:

  • 感谢它的工作。但是你能解释一下这段代码吗?它有什么作用?私人无效NextActionPerformed(ActionEvent evt){欢迎myProg =新的欢迎(); myProg.setTitle("Ceng 344 - Lab 7"); myProg.setSize(450, 400); myProg.setLocationRelativeTo(null); myProg.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); myProg.setVisible(true); }
  • 好的,你需要给下一个按钮添加动作,当你点击它时,它会调用另一个框架,所以我创建下一个按钮 JButton next = new JButton("Next"); ,然后我给它添加一个动作,这个动作叫做 NextActionPerformed ,这个方法叫做 Welcome Frame
  • 这部分你在Welcome主方法中调用它,所以我在主方法中不需要它,这是下一步按钮行动
  • 我认为你需要阅读 Java GUI,所以试试这个:ntu.edu.sg/home/ehchua/programming/java/J4a_GUI.html
猜你喜欢
  • 2017-01-29
  • 1970-01-01
  • 1970-01-01
  • 2023-04-05
  • 2011-04-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-04
  • 2022-01-25
相关资源
最近更新 更多