我是靠谱客的博主 成就吐司,最近开发中收集的这篇文章主要介绍java控制器有哪些_Java Swing中的控制器是什么?,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

小编典典

Controller构成了组件接口的另一半,主要是交互的一半。控制器负责鼠标和键盘事件。

在Swing JButton等组件中是控制器。所有侦听器类都将事件重定向到具有您的业务逻辑的模型

例如:

主程序

import javax.swing.*;

public class CalcMVC {

//... Create model, view, and controller. They are

// created once here and passed to the parts that

// need them so there is only one copy of each.

public static void main(String[] args) {

CalcModel model = new CalcModel();

CalcView view = new CalcView(model);

CalcController controller = new CalcController(model, view);

view.setVisible(true);

}

}

视图

import java.awt.*;

import javax.swing.*;

import java.awt.event.*;

class CalcView extends JFrame {

//... Constants

private static final String INITIAL_VALUE = "1";

//... Components

private JTextField m_userInputTf = new JTextField(5);

private JTextField m_totalTf = new JTextField(20);

private JButton m_multiplyBtn = new JButton("Multiply");

private JButton m_clearBtn = new JButton("Clear");

private CalcModel m_model;

//======================================================= constructor

/** Constructor */

CalcView(CalcModel model) {

//... Set up the logic

m_model = model;

m_model.setValue(INITIAL_VALUE);

//... Initialize components

m_totalTf.setText(m_model.getValue());

m_totalTf.setEditable(false);

//... Layout the components.

JPanel content = new JPanel();

content.setLayout(new FlowLayout());

content.add(new JLabel("Input"));

content.add(m_userInputTf);

content.add(m_multiplyBtn);

content.add(new JLabel("Total"));

content.add(m_totalTf);

content.add(m_clearBtn);

//... finalize layout

this.setContentPane(content);

this.pack();

this.setTitle("Simple Calc - MVC");

// The window closing event should probably be passed to the

// Controller in a real program, but this is a short example.

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

void reset() {

m_totalTf.setText(INITIAL_VALUE);

}

String getUserInput() {

return m_userInputTf.getText();

}

void setTotal(String newTotal) {

m_totalTf.setText(newTotal);

}

void showError(String errMessage) {

JOptionPane.showMessageDialog(this, errMessage);

}

void addMultiplyListener(ActionListener mal) {

m_multiplyBtn.addActionListener(mal);

}

void addClearListener(ActionListener cal) {

m_clearBtn.addActionListener(cal);

}

}

控制者

import java.awt.event.*;

public class CalcController {

//... The Controller needs to interact with both the Model and View.

private CalcModel m_model;

private CalcView m_view;

//========================================================== constructor

/** Constructor */

CalcController(CalcModel model, CalcView view) {

m_model = model;

m_view = view;

//... Add listeners to the view.

view.addMultiplyListener(new MultiplyListener());

view.addClearListener(new ClearListener());

}

// inner class MultiplyListener

/** When a mulitplication is requested.

* 1. Get the user input number from the View.

* 2. Call the model to mulitply by this number.

* 3. Get the result from the Model.

* 4. Tell the View to display the result.

* If there was an error, tell the View to display it.

*/

class MultiplyListener implements ActionListener {

public void actionPerformed(ActionEvent e) {

String userInput = "";

try {

userInput = m_view.getUserInput();

m_model.multiplyBy(userInput);

m_view.setTotal(m_model.getValue());

} catch (NumberFormatException nfex) {

m_view.showError("Bad input: '" + userInput + "'");

}

}

}//end inner class MultiplyListener

inner class ClearListener

/** 1. Reset model.

* 2. Reset View.

*/

class ClearListener implements ActionListener {

public void actionPerformed(ActionEvent e) {

m_model.reset();

m_view.reset();

}

}// end inner class ClearListener

}

模型

import java.math.BigInteger;

public class CalcModel {

//... Constants

private static final String INITIAL_VALUE = "0";

//... Member variable defining state of calculator.

private BigInteger m_total; // The total current value state.

//============================================================== constructor

/** Constructor */

CalcModel() {

reset();

}

//==================================================================== reset

/** Reset to initial value. */

public void reset() {

m_total = new BigInteger(INITIAL_VALUE);

}

//=============================================================== multiplyBy

/** Multiply current total by a number.

*@param operand Number (as string) to multiply total by.

*/

public void multiplyBy(String operand) {

m_total = m_total.multiply(new BigInteger(operand));

}

//================================================================= setValue

/** Set the total value.

*@param value New value that should be used for the calculator total.

*/

public void setValue(String value) {

m_total = new BigInteger(value);

}

//================================================================= getValue

/** Return current calculator total. */

public String getValue() {

return m_total.toString();

}

}

2020-11-01

最后

以上就是成就吐司为你收集整理的java控制器有哪些_Java Swing中的控制器是什么?的全部内容,希望文章能够帮你解决java控制器有哪些_Java Swing中的控制器是什么?所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部