比如2个类,A和B,B是图形界面,一个窗体上有2个按钮"确定"和“取消”现在A要调用B,当点击不同按钮时候A输出不同的消息。。这个机制怎么实现?

解决方案 »

  1.   

    public class B
    {
    A a;
    public void setA(A a)
    {
    this.a = a;
    }
    ...
    actionPerformed: a.print(...);
    ...
    }
    main: A a = new A();
          B b = new B();
          b.setA(a);
          ...
      

  2.   

    哪儿那么麻烦,用JOptionPane的对话框不就完了?!
      

  3.   

    JOptionPane我当然知道,但这是自己类里,现在要把JOptionPane选择的结果传到外面去。。
      

  4.   

    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;public class A extends JFrame{
      JPanel jPanel1 = new JPanel();
      JButton jButton1 = new JButton();
      JButton jButton2 = new JButton();
      B b=new B();
      public A() {
        try {
          jbInit();
          this.setSize(300,200);
          this.show();
          b.show();
        }
        catch(Exception e) {
          e.printStackTrace();
        }
      }
      public static void main(String[] args) {
        A a1 = new A();
      }
      private void jbInit() throws Exception {
        jButton1.setText("确定");
        jButton1.addActionListener(new A_jButton1_actionAdapter(this));
        jButton2.setText("取消");
        jButton2.addActionListener(new A_jButton2_actionAdapter(this));
        this.getContentPane().add(jPanel1,  BorderLayout.CENTER);
        jPanel1.add(jButton1, null);
        jPanel1.add(jButton2, null);
      }  void jButton1_actionPerformed(ActionEvent e) {
        b.jTextArea1.append(jButton1.getText());
        b.jTextArea1.append("\n");
      }  void jButton2_actionPerformed(ActionEvent e) {
        b.jTextArea1.append(jButton2.getText());
        b.jTextArea1.append("\n");
      }}class A_jButton1_actionAdapter implements java.awt.event.ActionListener {
      A adaptee;  A_jButton1_actionAdapter(A adaptee) {
        this.adaptee = adaptee;
      }
      public void actionPerformed(ActionEvent e) {
        adaptee.jButton1_actionPerformed(e);
      }
    }class A_jButton2_actionAdapter implements java.awt.event.ActionListener {
      A adaptee;  A_jButton2_actionAdapter(A adaptee) {
        this.adaptee = adaptee;
      }
      public void actionPerformed(ActionEvent e) {
        adaptee.jButton2_actionPerformed(e);
      }
    }
      

  5.   

    import javax.swing.*;
    import java.awt.*;public class B extends JFrame{
      JScrollPane jScrollPane1 = new JScrollPane();
      public static JTextArea jTextArea1 = new JTextArea();
      public B() {
        try {
          jbInit();
          this.setSize(400,300);
        }
        catch(Exception e) {
          e.printStackTrace();
        }
      }
      public static void main(String[] args) {
        B b1 = new B();
      }
      private void jbInit() throws Exception {
        this.getContentPane().add(jScrollPane1, BorderLayout.CENTER);
        jScrollPane1.getViewport().add(jTextArea1, null);
      }}
      

  6.   

    楼上的还是没有懂我的意思,我估计这里牵涉到同步锁的问题。。class A{public static void main (){
       B b=new B()  //(1)
       if(...)
        System.out.println(...)
      else
        System.out.println(...)
     
    }}//类B是图形界面的
    class B extends JFrame{里面基本代码就和图形类一样,有2个按钮组件void jButton1_actionPerformed(ActionEvent e) {  //“确定”按钮的事件方法
    ???怎么写
    }}基本代码就上面的,现在运行A,在执行完语句1后,也就是B类被创建后,这时候应该跳出来图形界面,但此时A的流程却也继续下去,执行if、else语句了。。现在我要求的是,在初始化B后,A的流程停下来,等我在跳出来的B的图形界面上点击确定或者是取消按钮后再 执行if、else当然我知道要实现这种效果语句1不是这么写的,而且要把点击按钮的结果传到A里也应该有个办法,现在问题就是怎么写
      

  7.   

    你把图形类B用JDialog基类实现,JDialog有个方法setModel(boolean b)
    把它设置成true,然后setVisible(true),程序走到这里就终止了.
    至于返回值也可以实现,我反正用JDialog基类实现过这个需求,和你的需求一样.核心就是setModel()方法