如何在jframe中单击jbutton时执行.java文件?
在jframe中单击jbutton时,我希望执行Start.java文件;怎么办? java执行得很好。我希望在jframe中单击jbutton时执行相同的操作,请帮助我 我的jframe代码有jbutton如何在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
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。。我将尝试将其添加到现有容器中..谢谢