在Jpanel中先显示A,单击鼠标后变为B,再次单击又变为A,如此循环。还望高手提供源码,谢了!

解决方案 »

  1.   

    在JPanel中放一个JLabel,JLabel的文字设置为"A",用一个boolean型变量 isA 保存状态,或直接JLabel.getText().equals("A").
    监听按钮点击事件,判断JLabel的内容,再做JLabel.setText(String str)。
      

  2.   

    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import java.awt.Rectangle;
    import java.awt.GridLayout;
    import javax.swing.JButton;
    import java.awt.event.ActionListener;
    import java.awt.event.ActionEvent;
    import java.awt.CardLayout;
    public class Frame3 extends JFrame{
        public Frame3() {
            try {
                jbInit();
            } catch (Exception exception) {
                exception.printStackTrace();
            }
        }    private void jbInit() throws Exception {
            getContentPane().setLayout(null);
            jPanel1.setBounds(new Rectangle(86, 64, 234, 171));
            jPanel1.setLayout(gridLayout1);
            JButton jButton1 = new JButton("A");
            JButton jButton2 = new JButton("B");
            this.getContentPane().add(jPanel1);
            ActionListener s=new ActionListener(){
                public void actionPerformed(ActionEvent e) {
                    gridLayout1.next(jPanel1);
                }
            };
            jButton1.addActionListener(s);
            jButton2.addActionListener(s);
            jPanel1.add(jButton1,"1");
            jPanel1.add(jButton2,"2");
            
          this.setVisible(true);
        }    JPanel jPanel1 = new JPanel();
        CardLayout gridLayout1 = new CardLayout();
      
       public static void main(String[] a){
            new Frame3();
          }
    }// 这个是用 2个按钮实现的  
      

  3.   

    import java.awt.*;
     import java.awt.event.*;
     import javax.swing.*;
    public class ClickToChange extends JFrame {
        public ClickToChange(){
      final  JLabel jlable1=new JLabel("Java is fun!");
        add(jlable1);
        jlable1.addMouseListener(new MouseListener(){
         public void mouseClicked(MouseEvent e){
         if(jlable1.getText().equals("Java is fun!"))
         jlable1.setText("Welcome to Java!");
         else jlable1.setText("Java is fun!");
         }
        });
        }
        public static void main(String[] args) {
        ClickToChange frame=new ClickToChange();
        frame.setTitle("Click to change!");
        frame.setLocationRelativeTo(null);
         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
         frame.setSize(200,200);
         frame.setVisible(true);
        }
    }
    编译的时候出现了错误:<匿名 ClickToChange$1> 不是抽象的,并且未覆盖 java.awt.event.MouseListener 中的抽象方法 mouseExited(java.awt.event.MouseEvent)
    还望高手解释一下,帮帮忙!
      

  4.   

    import java.awt.*;
     import java.awt.event.*;
     import javax.swing.*;
    public class ClickToChange extends JFrame {
        public ClickToChange(){
      final  JLabel jlable1=new JLabel("Java is fun!");
        add(jlable1);
        jlable1.addMouseListener(new MouseListener(){
         public void mouseExited(MouseEvent e){
         }
         public void mouseEntered(MouseEvent e){
         }
         public void mouseReleased(MouseEvent e){
         }
         public void mousePressed(MouseEvent e){
         }
         public void mouseClicked(MouseEvent e){
         if(jlable1.getText().equals("Java is fun!"))
         jlable1.setText("Welcome to Java!");
         else jlable1.setText("Java is fun!");
         }
        });
        }
        public static void main(String[] args) {
        ClickToChange frame=new ClickToChange();
        frame.setTitle("Click to change!");
        frame.setLocationRelativeTo(null);
         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
         frame.setSize(200,200);
         frame.setVisible(true);
        }
    }
    搞完了,可是出了很多莫名其妙的问题。比如内部类引用的变量必须是final的。而且覆盖MouseClick的这么多方法很繁琐,应该还有更简便的方法吧。希望有更好的答案回复。谢谢大家了。