如何在jframe中单击jbutton时执行.java文件?

如何在jframe中单击jbutton时执行.java文件?,java,swing,jframe,jbutton,Java,Swing,Jframe,Jbutton,在jframe中单击jbutton时,我希望执行Start.java文件;怎么办? java执行得很好。我希望在jframe中单击jbutton时执行相同的操作,请帮助我 我的jframe代码有jbutton private void jButton3MouseClicked(java.awt.event.MouseEvent evt) { // i want to execute Start.java file on clicking the button Star

在jframe中单击jbutton时,我希望执行Start.java文件;怎么办? java执行得很好。我希望在jframe中单击jbutton时执行相同的操作,请帮助我

我的jframe代码有jbutton

private void jButton3MouseClicked(java.awt.event.MouseEvent evt) {   

    // i want to execute Start.java file on clicking the button

     Start s = new Start();
     String in = s.getTxt;
     System.out.println(in);
    repaint();
 }  
我的Start.java文件是:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;


public class Start extends JPanel{

public String getTxt;
public Start()
{

 final  JTextField jf = new JTextField(20);
 jf.setBounds(30, 30, 250, 30);
 final JButton j1 = new JButton("OK");
 j1.setBounds(80, 80, 100, 30);
 setLayout(null);

 add(jf);
 add(j1);

   j1.addActionListener(new ActionListener() {
       @Override
       public void actionPerformed(ActionEvent e) {


                        getTxt = jf.getText();
                        System.out.println(getTxt);

                    }
                   });
  }


 public static void main(String[] args) {

    JFrame f = new JFrame("Interest");
    f.getContentPane().add(new Start());
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    f.setPreferredSize(new Dimension(310,250));
    f.setMaximumSize(new Dimension(310,250));
    f.setMinimumSize(new Dimension(310,250));

    f.pack();
    f.setVisible(true);
}

}

因此,根据您在代码中所做的事情,我强烈建议您查看一下,主要原因是,模式对话框将导致程序的执行在对话框可见时停止,并在关闭时恢复,这样做,允许您检查用户可能已更改的值

所以,当我第一次尝试让你的程序运行时,发生了这样的事情

因此,在深入研究代码之后,我注意到您已经完成了
setLayout(null)。这将继续困扰您,我强烈建议您不要这样做,并学习如何使用布局管理API

所以,我跳进了你的代码并添加了一个布局管理器

public class Start extends JPanel {

    public String getTxt;

    public Start() {

        final JTextField jf = new JTextField(20);
        final JButton j1 = new JButton("OK");
        setLayout(new GridBagLayout());

        GridBagConstraints gbc = new GridBagConstraints();
        gbc.gridwidth = GridBagConstraints.REMAINDER;

        add(jf, gbc);
        add(j1, gbc);

        j1.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {

                getTxt = jf.getText();
                System.out.println(getTxt);

            }
        });
    }

    public static void main(String[] args) {

        JFrame f = new JFrame("Interest");
        f.getContentPane().add(new Start());
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setPreferredSize(new Dimension(310, 250));
        f.setMaximumSize(new Dimension(310, 250));
        f.setMinimumSize(new Dimension(310, 250));

        f.pack();
        f.setVisible(true);
    }
}
现在我得到

好的,但是现在有两个按钮,除非用户点击中间的按钮,否则文本永远不会被设置

事实是,对于这种事情,你不需要按钮!您只需要一个可以返回
JTextField
的当前文本的方法,例如

public class Start extends JPanel {

    final JTextField jf = new JTextField(20);

    public Start() {
        setLayout(new GridBagLayout());

        GridBagConstraints gbc = new GridBagConstraints();
        gbc.gridwidth = GridBagConstraints.REMAINDER;

        add(jf, gbc);
    }

    public String getText() {
        return jf.getText();
    }

    public static void main(String[] args) {

        JFrame f = new JFrame("Interest");
        f.getContentPane().add(new Start());
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setPreferredSize(new Dimension(310, 250));
        f.setMaximumSize(new Dimension(310, 250));
        f.setMinimumSize(new Dimension(310, 250));

        f.pack();
        f.setVisible(true);
    }
}
然后我可以用

来展示一下吧


我强烈建议您花点时间查看一下

因此,根据您在代码中所做的工作,我强烈建议您查看一下,主要原因是,模式对话框将导致程序在对话框可见时停止执行,并在对话框关闭时继续执行,这样,您就可以检查用户可能更改的值

所以,当我第一次尝试让你的程序运行时,发生了这样的事情

因此,在深入研究代码之后,我注意到您已经完成了
setLayout(null)。这将继续困扰您,我强烈建议您不要这样做,并学习如何使用布局管理API

所以,我跳进了你的代码并添加了一个布局管理器

public class Start extends JPanel {

    public String getTxt;

    public Start() {

        final JTextField jf = new JTextField(20);
        final JButton j1 = new JButton("OK");
        setLayout(new GridBagLayout());

        GridBagConstraints gbc = new GridBagConstraints();
        gbc.gridwidth = GridBagConstraints.REMAINDER;

        add(jf, gbc);
        add(j1, gbc);

        j1.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {

                getTxt = jf.getText();
                System.out.println(getTxt);

            }
        });
    }

    public static void main(String[] args) {

        JFrame f = new JFrame("Interest");
        f.getContentPane().add(new Start());
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setPreferredSize(new Dimension(310, 250));
        f.setMaximumSize(new Dimension(310, 250));
        f.setMinimumSize(new Dimension(310, 250));

        f.pack();
        f.setVisible(true);
    }
}
现在我得到

好的,但是现在有两个按钮,除非用户点击中间的按钮,否则文本永远不会被设置

事实是,对于这种事情,你不需要按钮!您只需要一个可以返回
JTextField
的当前文本的方法,例如

public class Start extends JPanel {

    final JTextField jf = new JTextField(20);

    public Start() {
        setLayout(new GridBagLayout());

        GridBagConstraints gbc = new GridBagConstraints();
        gbc.gridwidth = GridBagConstraints.REMAINDER;

        add(jf, gbc);
    }

    public String getText() {
        return jf.getText();
    }

    public static void main(String[] args) {

        JFrame f = new JFrame("Interest");
        f.getContentPane().add(new Start());
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setPreferredSize(new Dimension(310, 250));
        f.setMaximumSize(new Dimension(310, 250));
        f.setMinimumSize(new Dimension(310, 250));

        f.pack();
        f.setVisible(true);
    }
}
然后我可以用

来展示一下吧


我强烈建议您花点时间查看一下

您是否考虑过将
Start
的实例添加到您现有的容器中?可能使用
卡片布局
?您是否考虑过创建一个新的
JFrame
并将您的
Start
实例添加到其中,或者使用
JDialog
?我想尝试在JFrame中添加Start实例,但我不确定是否要从一个JFrame移动到另一个JFrame。。我将尝试将其添加到现有容器中..谢谢您是否考虑过添加
Start
的实例以添加现有容器?可能使用
卡片布局
?您是否考虑过创建一个新的
JFrame
并将您的
Start
实例添加到其中,或者使用
JDialog
?我想尝试在JFrame中添加Start实例,但我不确定是否要从一个JFrame移动到另一个JFrame。。我将尝试将其添加到现有容器中..谢谢