从一个jframe类里面单击一个按钮,弹出来一个jdialog类,在这个jdialog里面可以操纵jframe里面的值么?或者将jdialog里面的数据返回给jframe?

解决方案 »

  1.   

    我的做法是这样的,不知是否正确:class my_frame { 
        JFrame frame ; 
        JTextField field ;
        
        my_frame() { 
            // 初始化frame和field
            // 将field添加到frame中去
        }    void amethod() {
        my_dialog = new my_dialog(this) ;
            ...
        }
    }class my_dialog {
        JDialog dialog ;
        my_frame parent ;    my_dialog(my_frame parent) { 
            this.parent = parent ;
            dialog = new JFrame(parent.frame) ;
        }    void some_method() {
        parent.field.setText("accessing from child window") ;
      }}
      

  2.   

    package wuchunzhi;
    import java.awt.Graphics;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.ComponentAdapter;
    import java.awt.event.ComponentEvent;import javax.swing.*;public class test3
    {
    //private static testFrame frame;
     //private static testPanel panel;
    public static void main(String[] args)
    {
    JFrame frame=new JFrame();
    frame.setSize(500,500);
    frame.setTitle("test");
    frame.setVisible(true);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     JPanel panel=new JPanel();
    JButton button=new JButton("test");
    frame.add(panel);
    frame.setVisible(true);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    JOptionPane.showInputDialog(panel, "test");
    String s=JOptionPane.showInputDialog(panel, "test");
    System.out.println(s);
    ints=Integer.parseInt(s);
    System.out.println(ints);
    frame.setBounds(0, 0, ints, ints);
    frame.repaint();
    }
    private static int ints;
    }
      

  3.   

    在监听器中我也没实现出来!!好遗憾!!只写了一个不用监听器的方法!期待高手进入!!代码如下:
    package wuchunzhi;
    import java.awt.Graphics;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.ComponentAdapter;
    import java.awt.event.ComponentEvent;
    import javax.swing.*;
    public class test
    {
    public static void main(String[] args)
    {
    testFrame frame=new testFrame();
    frame.setVisible(true);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    }
    class testFrame extends JFrame
    {
    testFrame()
    {
    setSize(500,500);
    setTitle("test");
    testPanel panel=new testPanel();
    add(panel);
    setVisible(true);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    }
    class testPanel extends JPanel
    {
    testPanel()
    {
    JButton button=new JButton("test");
    button.addActionListener(new testActionListener());
    add(button);
    }
    }
    class testActionListener implements ActionListener
    {
        private testPanel panel;private JFrame frame;private int ints;
    public void actionPerformed(ActionEvent e)
    {
    JOptionPane.showInputDialog(panel, "test");
    String s=JOptionPane.showInputDialog(panel, "test");
    System.out.println(s);
    ints=Integer.parseInt(s);
    System.out.println(ints);
    frame.setBounds(0, 0, ints, ints);
    frame.repaint();
    }
    }