程序模拟电梯,如果点左侧是接客人,右键是送,希望可以在左上角的JLabel中更新提示,“getting passage” 或 “sending passage”
代码如下:import java.awt.*;
import java.awt.event.*;
import javax.swing.*;public class Elevators extends JApplet
{
  private Elevator elevator = new Elevator();
  final JLabel messageLabel= new JLabel();   public void init()
  {
ButtonPanelL lb = new ButtonPanelL(elevator);
ButtonPanelR rb = new ButtonPanelR(elevator);            messageLabel.setText("Welcome Passages");
setLayout(new BorderLayout());
add(messageLabel, BorderLayout.NORTH);
add(lb, BorderLayout.WEST);
add(rb, BorderLayout.EAST);
add(elevator, BorderLayout.CENTER);
  }   public static void main(String[] args)
  {
JFrame frame = new JFrame("Ying Jia's Elevator"); Elevators applet = new Elevators(); frame.add(applet, BorderLayout.CENTER); applet.init();
applet.start(); frame.setSize(800, 800);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
  }
}class Elevator extends JPanel
{
  private boolean goingUp;   
  private int numberFloors=8;
  private int destinationFloor = 8;  
  private int currentFloor=1;
  private int width = 70; 
  private int height; 
  private int x = 500;   
  private int currentY = 650 ;
  private int dy =4; 
  private Timer timer = new Timer(200, new Listener());   public Elevator()
  {
setBackground(Color.white); 
  }  
  public void setColor(Color color)
  {
setForeground(color);
  }  
  public void move(int toFloor)
  {
destinationFloor = toFloor;
move();
  }   private void move()
  { if (destinationFloor > currentFloor)
goingUp = true;
         else 
goingUp = false; timer.start();
  }   class Listener implements ActionListener
   {
       public void actionPerformed(ActionEvent e)
       {           if (goingUp)
           {
            if (currentFloor < destinationFloor)
         {
  currentY = currentY - dy;
  repaint();
                     }
              else
                        timer.stop();
                }
         else
          { 
           if (currentFloor >= destinationFloor)
  {
  currentY = currentY + dy;
  repaint();
  }                   else
                          timer.stop();
              }
         }
   }    public void paintComponent(Graphics g)
   {
     super.paintComponent(g);
        height = getHeight() /numberFloors;     currentFloor=(int)(numberFloors-numberFloors*((double)currentY/getHeight()));
  
     g.fillRect(x, currentY, width, height);
   // JLabel messgeLabel= new JLabel("");
   }
}//The ButtonPanel encapsulates buttons
class ButtonPanelL extends JPanel
{
 // JLabel messageLabel = new JLabel("  ");
  private Elevator elevator;    // The elevator
 // private JLabel messageLabel = new JLabel("  ");
  private JButton floor8=new JButton("Floor 8");
  private JButton floor7=new JButton("Floor 7");
  private JButton floor6=new JButton("Floor 6");
  private JButton floor5=new JButton("Floor 5");
  private JButton floor4=new JButton("Floor 4");
  private JButton floor3=new JButton("Floor 3");
  private JButton floor2=new JButton("Floor 2");
  private JButton floor1=new JButton("Floor 1");   ButtonPanelL(Elevator elevator)
   {
// Pass the elevator, frame, status to the button panel
this.elevator = elevator;
 //   add(messageLabel);
setLayout(new GridLayout(8,1));
add(floor8);
add(floor7);
add(floor6);
add(floor5);
add(floor4);
add(floor3);
add(floor2);
add(floor1); setBackground(Color.blue); floor8.addActionListener(new ButtonListener());
floor7.addActionListener(new ButtonListener());
floor6.addActionListener(new ButtonListener());
floor5.addActionListener(new ButtonListener());
floor4.addActionListener(new ButtonListener());
floor3.addActionListener(new ButtonListener());
floor2.addActionListener(new ButtonListener());
floor1.addActionListener(new ButtonListener());
   }   class ButtonListener implements ActionListener
  {
  // Handle button actions
  public void actionPerformed(ActionEvent e)
  {
//   messageLabel.setText("geting");
if (e.getSource() instanceof JButton)
  {
  if (e.getSource() == floor8) // pressed floor8 button
  {
 elevator.move(8); //messageLabel.setText("geting!");
   }
  if (e.getSource() == floor7) // pressed floor7 button
  {
 elevator.move(7);
  }
  if (e.getSource() == floor6) // pressed floor6 button
  {
 elevator.move(6);
  }
  if (e.getSource() == floor5) // pressed floor5 button
  {
 elevator.move(5);
  }
  if (e.getSource() == floor4) // pressed floor4 button
  {
 elevator.move(4);
  }
  if (e.getSource() == floor3) // pressed floor3 button
  {
 elevator.move(3);
  }
  if (e.getSource() == floor2) // pressed floor2 button
  {
 elevator.move(2);
  }
  if (e.getSource() == floor1) //pressed floor1 button
  {
 elevator.move(1);
  }
 // JLabel messgeLabel= new JLabel("Getting passages");
   }
  }
  }}class ButtonPanelR extends JPanel
{
  private Elevator elevator;    // The elevator   private JButton floor8=new JButton("Floor 8");
  private JButton floor7=new JButton("Floor 7");
  private JButton floor6=new JButton("Floor 6");
  private JButton floor5=new JButton("Floor 5");
  private JButton floor4=new JButton("Floor  ");
  private JButton floor3=new JButton("Floor 3");
  private JButton floor2=new JButton("Floor 2");
  private JButton floor1=new JButton("Floor 1");   ButtonPanelR(Elevator elevator)
  {
// Pass the elevator, frame, status to the button panel
this.elevator = elevator;
setLayout(new GridLayout(8,1));
add(floor8);
add(floor7);
add(floor6);
add(floor5);
add(floor4);
add(floor3);
add(floor2);
add(floor1); setBackground(Color.blue); floor8.addActionListener(new ButtonListener());
floor7.addActionListener(new ButtonListener());
floor6.addActionListener(new ButtonListener());
floor5.addActionListener(new ButtonListener());
floor4.addActionListener(new ButtonListener());
floor3.addActionListener(new ButtonListener());
floor2.addActionListener(new ButtonListener());
floor1.addActionListener(new ButtonListener());
  }   class ButtonListener implements ActionListener
  {
  // Handle button actions
  public void actionPerformed(ActionEvent e)
  {
if (e.getSource() instanceof JButton)
  {
  if (e.getSource()==floor8) // pressed floor8 button
  {
 elevator.move(8);
  }
  if (e.getSource()==floor7) // pressed floor7 button
  {
 elevator.move(7);
  }
  if (e.getSource()==floor6) // pressed floor6 button
  {
 elevator.move(6);
  }
  if (e.getSource()==floor5) // pressed floor5 button
  {
 elevator.move(5);
  }
  if (e.getSource()==floor4) // pressed floor4 button
  {
 elevator.move(4);
  }
  if (e.getSource()==floor3) // pressed floor3 button
  {
 elevator.move(3);
  }
  if (e.getSource()==floor2) // pressed floor2 button
  {
 elevator.move(2);
  }
  if (e.getSource()==floor1) //pressed floor1 button
  {
 elevator.move(1);
  }
   }
  }
  }}

解决方案 »

  1.   

    尝试了很多次添加setText()均失 败(还在程序中隐着呢//)所以向大家求教了
      

  2.   

    对于java有点晕,总是用着用着就不知道怎么回事了。
      

  3.   

    哥,你为什么不加注释呢,加注释你会好一点最起码知道,上步做的什么。
    final JLabel messageLabel= new JLabel();你把这句改为Static JLabel MessageLabel = new JLabel();
    当点击左边的按钮式你就这样做public void perfromed(){
    Elevators.MessageLabel.setText("getting passage");
    }
    你把JLabel声明为静态的,可以再此类的作用范围内,只要加上类名可以任意的引用。
      

  4.   

    我修改了对 JLabel 的定义 为 static
    然后将按钮更新的代码加在了以下位置。
    编译通过了,但是运行的时候,点击了按钮文字(messageLabel)并没有随之更新。
    补充一下,我确实是对java很糊涂,能麻烦帮我把代码改一下,这样我才能明白点,黑线。
         class ButtonListener implements ActionListener
      {
      public void Perfromed()
      {
      Elevators.messageLabel.setText("getting passage");
          }   // Handle button actions
      public void actionPerformed(ActionEvent e)
      { if (e.getSource() instanceof JButton)
      {
    //        if (e.getSource() == floor8) // pressed floor8 button
      {
     elevator.move(8); //messageLabel.setText("Congratulations!");
       }
      if (e.getSource() == floor7) // pressed floor7 button
      {
     elevator.move(7);
      }
      if (e.getSource() == floor6) // pressed floor6 button
      {
     elevator.move(6);
      }
      if (e.getSource() == floor5) // pressed floor5 button
      {
     elevator.move(5);
      }
      if (e.getSource() == floor4) // pressed floor4 button
      {
     elevator.move(4);
      }
      if (e.getSource() == floor3) // pressed floor3 button
      {
     elevator.move(3);
      }
      if (e.getSource() == floor2) // pressed floor2 button
      {
     elevator.move(2);
       //      messageLabel= new JLabel();
     //    messageLabel.setText("Getting passages");
       //  .add(messageLabel);
      }
      if (e.getSource() == floor1) //pressed floor1 button
      {
     elevator.move(1);
      }
     // JLabel messgeLabel= new JLabel("Getting passages");
       }
      }
      }