如何得到窗体中的参数? 本帖最后由 xinpet 于 2010-04-04 08:30:32 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 把JFrame改成JDialog,然后用setModal(true)堵塞main线程否则Pa pa=new Pa();//我想在这里得到窗体中点击确定后新输入的文本内容,应该怎么办?pa.getKk(); //你还没来得及输入这里就已经被执行了 线程堵住了,JButton又不能用了...,怎么才能使JButton能继续用呀? 如果JButton是在JDialog上的话,不可能不能用。Modal窗体只是堵塞线程,直到窗体关闭线程才继续往下执行,但窗体上的控件都是可用的。肯定是你的代码有问题 import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JDialog;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JTextField;public class Pa { private String kk; public Pa(){ try { final JDialog jf=new JDialog(); jf.setModal(true); JPanel jp=new JPanel(); jf.setSize(400, 400); JLabel jl=new JLabel("传递的参数为:"); final JTextField jtf=new JTextField(10); JButton jb=new JButton("传递"); jp.add(jl); jp.add(jtf); jp.add(jb); jf.add(jp); jf.setVisible(true); jf.setResizable(false); jb.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ setKk(jtf.getText()); jf.setModal(false); jf.dispose(); } }); } catch (Exception e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } public String getKk() { return kk; } public void setKk(String kk) { this.kk = kk; }} 不如采用观察者模式public class MainClass implements java.util.Observer{ private BufferedReader br; private static int count = 0; public void update(Observable observable, Object arg) { if(observable instanceof Pa) { System.out.println("aa"); System.out.println(((Pa)observable).getKk()); } } //public void takeList(ArrayList<? super javax.swing.JButton > list){list.add(new javax.swing.JButton());list.get(0);} public static void main(String []args) throws Exception{ MainClass m = new MainClass(); Pa pa = new Pa(); pa.addObserver(m);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.JPanel;import javax.swing.JTextField;public class Pa extends java.util.Observable{ private String kk; public Pa(){ final JFrame jf=new JFrame("窗体参数测试"); JPanel jp=new JPanel(); jf.setSize(400, 400); JLabel jl=new JLabel("传递的参数为:"); final JTextField jtf=new JTextField(10); JButton jb=new JButton("传递"); jp.add(jl); jp.add(jtf); jp.add(jb); jf.add(jp); jf.setVisible(true); jf.setResizable(false); jb.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ setKk(jtf.getText()); //getKk();// javax.swing.SwingUtilities.invokeAndWait(arg0) jf.dispose(); } }); } public String getKk() { return kk; } public void setKk(String kk) { this.kk = kk; setChanged(); notifyObservers(); } } spring连接数据库时,出现如下错误,怎么回事??? hibernate 3.6 最少需要几个什么包? 请教Spring的AOP的问题! struts版本问题 急救!!!!!谢谢了!!!!!!!!!!!!! 我的一个很麻烦的问题,请高手指点,谢谢 建议开设java 与 xml 专门区域,或开设xml专门区域。 请问:在哪里可以下Eclipse? (在线等) 用j2ee做销存系统 springmvc和mybatis结合 可以直接把用mybatis写的接口注入到service层???? jsp + servlet + javaBean 搭建的项目如何提高性能 西安协同工作流怎么用?!
否则
Pa pa=new Pa();
//我想在这里得到窗体中点击确定后新输入的文本内容,应该怎么办?
pa.getKk(); //你还没来得及输入这里就已经被执行了
Modal窗体只是堵塞线程,直到窗体关闭线程才继续往下执行,但窗体上的控件都是可用的。
肯定是你的代码有问题
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class Pa {
private String kk;
public Pa(){
try {
final JDialog jf=new JDialog();
jf.setModal(true);
JPanel jp=new JPanel(); jf.setSize(400, 400);
JLabel jl=new JLabel("传递的参数为:");
final JTextField jtf=new JTextField(10);
JButton jb=new JButton("传递");
jp.add(jl);
jp.add(jtf);
jp.add(jb);
jf.add(jp);
jf.setVisible(true);
jf.setResizable(false);
jb.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
setKk(jtf.getText());
jf.setModal(false);
jf.dispose();
}
});
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} }
public String getKk() {
return kk;
}
public void setKk(String kk) {
this.kk = kk;
}
}
public class MainClass implements java.util.Observer{
private BufferedReader br;
private static int count = 0;
public void update(Observable observable, Object arg) {
if(observable instanceof Pa) {
System.out.println("aa");
System.out.println(((Pa)observable).getKk());
}
}
//public void takeList(ArrayList<? super javax.swing.JButton > list){list.add(new javax.swing.JButton());list.get(0);}
public static void main(String []args) throws Exception{
MainClass m = new MainClass();
Pa pa = new Pa();
pa.addObserver(m);
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.JPanel;
import javax.swing.JTextField;
public class Pa extends java.util.Observable{
private String kk;
public Pa(){
final JFrame jf=new JFrame("窗体参数测试");
JPanel jp=new JPanel();
jf.setSize(400, 400);
JLabel jl=new JLabel("传递的参数为:");
final JTextField jtf=new JTextField(10);
JButton jb=new JButton("传递");
jp.add(jl);
jp.add(jtf);
jp.add(jb);
jf.add(jp);
jf.setVisible(true);
jf.setResizable(false); jb.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
setKk(jtf.getText());
//getKk();
// javax.swing.SwingUtilities.invokeAndWait(arg0)
jf.dispose();
}
});
}
public String getKk() {
return kk;
}
public void setKk(String kk) {
this.kk = kk;
setChanged();
notifyObservers();
}
}