📄 infoview.java
字号:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
public class InfoView{
private InfoModel model;
private static int viewNo=0;
private int viewId;
// GUI Components
private JFrame frame;
private Container contentPane;
private JPanel msgPan = new JPanel();
private JPanel wthPan = new JPanel();
private JTextField msgText = new JTextField(30);
private JTextField wthText = new JTextField(30);
private JLabel msgLabel = new JLabel("Message Display Page");
private JLabel wthLabel = new JLabel("Weather Display Page");
private JButton msgUpdate = new JButton("Update Message");
private JButton wthGet = new JButton("Get Weather");
private JButton wthUpdate = new JButton("Update Weather");
private JButton msgGet = new JButton("Get Message");
private CardLayout card = new CardLayout();
// user gesture listener management data structure
private ArrayList listeners = new ArrayList(10);
public InfoView(InfoModel model) {
this.model = model;
viewId = ++viewNo;
System.out.println("View " + viewId +
": InfoDisplay(model) ");
buildDisplay();
model.addModelChangeListener(this); //subscribe
}
public void processModelChange(Object event){
System.out.println("View " + viewId +
": processModelChange() ");
refresh();
}
public void addUserGestureListener(InfoController con){
System.out.println("View " + viewId +
": addUserGestureListener(controller) ");
listeners.add(con);
}
public void showDisplay(String display){
System.out.println("View " + viewId +
": showDisplay() ");
card.show(contentPane, display);
}
//private methods
private void refresh() {
System.out.println("View " + viewId +
": refresh() ");
msgText.setText(model.getMessage());
wthText.setText(model.getWeather());
}
private void buildDisplay(){
frame = new JFrame("Info Client " + viewId);
contentPane = frame.getContentPane();
// build message panel msgPan
msgPan.setLayout(new BorderLayout());
msgPan.add(msgLabel, BorderLayout.NORTH);
msgPan.add(msgText, BorderLayout.CENTER);
msgPan.add(msgUpdate, BorderLayout.EAST);
msgPan.add(wthGet, BorderLayout.WEST);
// build weather panel wthPan
wthPan.setLayout(new BorderLayout());
wthPan.add(wthLabel, BorderLayout.NORTH);
wthPan.add(wthText, BorderLayout.CENTER);
wthPan.add(wthUpdate, BorderLayout.EAST);
wthPan.add(msgGet, BorderLayout.WEST);
// add panels to frame and show frame
contentPane.setLayout(card);
contentPane.add(msgPan, "message");
contentPane.add(wthPan, "weather");
frame.pack();
frame.setDefaultCloseOperation( JFrame.DISPOSE_ON_CLOSE );
frame.setVisible( true );
frame.setLocation(0, (viewId-1)*100);
refresh();
// register event listeners with the GUI controls
msgUpdate.addActionListener(msgUpdateHandler);
wthGet.addActionListener(wthGetHandler);
wthUpdate.addActionListener(wthUpdateHandler);
msgGet.addActionListener(msgGetHandler);
}
//event handler methods
ActionListener msgUpdateHandler =
new ActionListener() {
public void actionPerformed(ActionEvent e) {
// fire event -- inform registered controllers
InfoController con;
for (int i=0; i<listeners.size(); i++){
System.out.println("View " + viewId +
": fire msgUpdate event");
con = (InfoController) listeners.get(i);
con.processMsgUpdate(msgText.getText());
}
}
};
ActionListener msgGetHandler =
new ActionListener() {
public void actionPerformed(ActionEvent e) {
// code to process add new customer request
// fire event -- inform registered controllers
InfoController con;
for (int i=0; i<listeners.size(); i++){
System.out.println("View " + viewId +
": fire getMessage event");
con = (InfoController) listeners.get(i);
con.processGetMessage();
}
}
};
ActionListener wthUpdateHandler =
new ActionListener() {
public void actionPerformed(ActionEvent e) {
// code to process add new customer request
// fire event -- inform registered controllers
InfoController con;
for (int i=0; i<listeners.size(); i++){
System.out.println("View " + viewId +
": fire wthUpdate event");
con = (InfoController) listeners.get(i);
con.processWthUpdate(wthText.getText());
}
}
};
ActionListener wthGetHandler =
new ActionListener() {
public void actionPerformed(ActionEvent e) {
// code to process add new customer request
// fire event -- inform registered controllers
InfoController con;
for (int i=0; i<listeners.size(); i++){
System.out.println("View " + viewId +
": fire getWeather event");
con = (InfoController) listeners.get(i);
con.processGetWeather();
}
}
};
public static void main(String args[]){
InfoView view = new InfoView(new InfoModel());
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -