gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 02:58:35 25 4
gpt4 key购买 nike

单击 jframe 中的 jbutton 时,我希望执行 Start.java 文件;怎么办?Start.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);
}

最佳答案

因此,根据您似乎在代码中执行的操作,我强烈建议您查看 How to Make Dialogs ,主要原因是,模态对话框会导致程序的执行在对话框可见的位置停止,并在对话框关闭时恢复,这样,您就可以检查用户可能更改的值。

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

Bad

因此,在深入研究您的代码后,我注意到您已经完成了 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);
}
}

现在我明白了......

better

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

事实是,对于这种事情,您不需要按钮!您只需要一个可以返回 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);
}
}

然后我可以使用...

Done!

import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;

public class Test {

public static void main(String[] args) {
new Test();
}

public Test() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
ex.printStackTrace();
}

JFrame frame = new JFrame("Testing");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new TestPane());
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}

public class TestPane extends JPanel {

public TestPane() {
setLayout(new GridBagLayout());
JButton btn = new JButton("Surprise");
add(btn);

btn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
Start start = new Start();
JOptionPane.showMessageDialog(TestPane.this, start, "Surprise", JOptionPane.PLAIN_MESSAGE);
System.out.println(start.getText());
}
});
}

@Override
public Dimension getPreferredSize() {
return new Dimension(200, 200);
}

}
}

展示它!

我强烈建议您花时间看看 Laying Out Components Within a Container

关于java - 如何在 jframe 中单击 jbutton 时执行 .java 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36662036/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com