public class E4 extends JFrame{
    private JDialog jd;
    private JButton jb;
    private JLabel jl;
    public E4(){
             JFrame jf=new JFrame("事件");
    jb=new JButton("开始");
    jl=new JLabel("结果");
    jd=new JDialog(this,"对话框",true);
    jd.setBounds(200,200,200,200);
    JTextField jta=new JTextField("");
    String s=jta.getText();
    jl.setText(s);
    jb.addActionListener(new MyListener());
    jf.setLayout(new FlowLayout());
    jf.add(jb);
    jd.add(jl);
    jf.add(jta);
    setBounds(400,400,400,400);
    jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    jf.setSize(400,400);
    jf.setVisible(true);
    }
    class MyListener implements ActionListener{
public void actionPerformed(ActionEvent e){
jd.setVisible(true);
}}
public static void main(String[] args) {
// TODO Auto-generated method stub
         new E4();
}一个小练习,在文本域输入字符,然后在JDialog显示刚才输入的字符,可是这个程序的结果是JDialog没显示刚才输入的结果,求大神指点

解决方案 »

  1.   

    应该在事件(MyListener)里对dialog的label赋值。
      

  2.   


    import java.awt.Dimension;
    import java.awt.FlowLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import javax.swing.JButton;
    import javax.swing.JDialog;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JTextField;public class E4 extends JFrame {
    private JDialog jd; private JButton jb; private JLabel jl;
    JTextField jta = new JTextField("");

    public E4() {
    JFrame jf = new JFrame("事件");
    jb = new JButton("开始");
    jl = new JLabel("结果");
    jd = new JDialog(this, "对话框", true);
    jd.setBounds(200, 200, 200, 200);

    jta.setPreferredSize(new Dimension(100,20));
    String s = jta.getText();
    jl.setText(s);
    jb.addActionListener(new MyListener());
    jf.setLayout(new FlowLayout());
    jf.add(jb);
    jd.add(jl);
    jf.add(jta);
    setBounds(400, 400, 400, 400);
    jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    jf.setSize(400, 400);
    jf.setVisible(true);
    } class MyListener implements ActionListener {
    public void actionPerformed(ActionEvent e) {
    jl.setText(jta.getText());
    jd.setVisible(true);
    }
    } public static void main(String[] args) {
    // TODO Auto-generated method stub
    new E4();
    }
    }
      

  3.   

    你在监听器里面什么没有帮啊,只是设置为显示而已。
    你需要在里面加上jl.setText(jta.getText()).
    这样的话你的jta也要声明在构造方法以外
    否则后面识别不了
      

  4.   

    楼主你好,你点按钮后进入到相应事件后,应该在响应事件中处理你所述的情况,所以响应事件中应该处理这两个情况,1.获得你输入文本域的内容,String mes=jta.getText();2。将得到的内容显示到对话框中,jl.setText(str);将这两句加入到响应事件中,当然这里你应该注意,把jta声明时放在构造函数外面,不然内部类无法访问