在java swing 编程中,假设:有一个界面由三个面板组成,如
Panel1
Panel2
Panel3
其中Panel2中的内容是不固定的,根据Panel1中的按钮来显示不同的内容,请问如何实现???

解决方案 »

  1.   

    panel1 中的 按钮 加上监听器然后根据 监听到的事件的信息判断 修改panel2里面的内容  不知道你哪一块不明白    都是对象 获取到 panel2的对象直接修改就行了
      

  2.   

    对panel1的按钮进行监听,实现修改panel2内容的方法。比如在panel2中放个文本域,利用setText()来修改器内容。
      

  3.   

    panel1的按钮事件就是绘制panel2
      

  4.   

    在panel1上的按钮加一个监听器,然后通过监听来改变panel2
      

  5.   

    这个说法很对。利用panel1里的按钮事件来控制panel2的重绘完全可以实现,
      

  6.   

    import java.awt.BorderLayout;
    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;public class Demo extends JFrame{
    private int counter=0;
    private JPanel p1=new JPanel();
    private JPanel p2=new JPanel();
    private JButton b1=new JButton("点我刷新P2");
    private JButton b2=new JButton("我是P2里的");
    private JButton b3=new JButton("我是P2里的,刷新出来的");
    public Demo(){
    this.add(p1,BorderLayout.NORTH);
    p1.add(b1);
    this.add(p2,BorderLayout.CENTER);
    this.setVisible(true);
    this.setTitle("Demo");
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setSize(400,400);
    this.setLocationRelativeTo(null);
    b1.addActionListener(new ActionListener(){ @Override
    public void actionPerformed(ActionEvent e) {
    // TODO Auto-generated method stub
    counter++;
    p2.removeAll();
    new Thread(new Runner(p2)).start();
    }
    });
    }
    class Runner implements Runnable{
    private JPanel panel;
    Runner(JPanel panel){
    this.panel=panel;
    }
    public void run(){
    if(counter%2==0){
    panel.add(b2);
    }
    else
    panel.add(b3);
    panel.updateUI();
    }
    }
    public static void main(String[] args){
    new Demo();
    }}
    给你吧。可惜只30分。