程序模拟电梯,如果点左侧是接客人,右键是送,希望可以在左上角的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);
}
}
}
}}
代码如下: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);
}
}
}
}}
解决方案 »
- 初学者关于布局的问题
- 实现将整型数字字符串转换为整型数字的函数
- linux下安装mongodb 报错
- 问个关于java线程 EventQueue的问题,
- 编译通过运行时出错,不知何故?急,盼解。谢谢!
- 谁能给我一段树型的源代码,送分
- Socket问题
- 请问jre哪有的下?是不是就是jdk呀,可是我还是没找到。
- 奇怪,为什么BufferedInputStream的构造器参数是(InputStream in)和(InputStream in,int size)啊?InputStream是抽象类,怎么能被实例化呢?
- 高分求助一个小程序弹出对话框的例子
- 有没有简洁的双向映射数据结构的实现?
- id.equals("")与id!=""的问题
final JLabel messageLabel= new JLabel();你把这句改为Static JLabel MessageLabel = new JLabel();
当点击左边的按钮式你就这样做public void perfromed(){
Elevators.MessageLabel.setText("getting passage");
}
你把JLabel声明为静态的,可以再此类的作用范围内,只要加上类名可以任意的引用。
然后将按钮更新的代码加在了以下位置。
编译通过了,但是运行的时候,点击了按钮文字(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");
}
}
}