将GUI链接到逻辑

时间:2018-11-19 21:13:45

标签: java swing user-interface logic

我对Java来说还比较陌生,并且正在努力使GUI能够用于 简化的银行应用逻辑。除了明显的客户和帐户 我有一个BankLogic类,其中包含所有 操作(存款,创建新帐户,客户等),大多数情况下 情况采用persNumber参数。 对于GUI,我有一个菜单,其中包含所有操作的菜单项。

对于大多数这些项目,我尝试做的是: -在带有文本字段的框架中提供persNr。 -如果persNumber对应于现有客户,那么它就在继续 进行逻辑运算并显示相关内容。显示 我为各种框架创建了单独的类。 这样的示例:

t = soup.find('h2')
print(t.parent.get('href'))

下面引用的BankLogicInit是一个仅包含受BankLogic保护的静态变量(逻辑)的类-可以访问GUI的数据,但不确定这是正确的方法。

public abstract class InputUI extends JFrame
{
private static final int FRAME_WIDTH = 450;
private static final int FRAME_HEIGHT = 100;

private JLabel persNrLabel;
private JTextField persNrInput;
private JButton button;

public InputUI()
{

    setSize(FRAME_WIDTH, FRAME_HEIGHT);
    setVisible(true);

    createTextField();
    createButton();
    createPanel();
    pack();
}

public void createTextField() {
    persNrLabel = new JLabel("Input personal number: ");
    final int FIELD_WIDTH = 10;
    persNrInput = new JTextField(FIELD_WIDTH);
}

public String getFieldText() {
    String x = persNrInput.getText();
    return x;
}

public void createButton() {
    class PersNoListener implements ActionListener
    {
        public void actionPerformed(ActionEvent event) {
            try
            {
                if (foundPersNr() == true)
                {
                    performAction();
                }
            } catch (Exception e)
            {
                JOptionPane.showMessageDialog(null, "Unknown error", "Message", JOptionPane.PLAIN_MESSAGE);
            }
        }
    }
    button = new JButton("OK");
    ActionListener listener = new PersNoListener();
    button.addActionListener(listener);
}

public abstract void performAction();

public boolean foundPersNr() {
    boolean found = false;

}

然后通过重写performAction()方法,将此类扩展为需要输入persNumber的操作:

    for (String searchPNr : BankLogicInit.logic.getAllCustomers()) 
    {
        if (searchPNr.contains(getFieldText()))
        {
            found = true;
        } else
        {
            JOptionPane.showMessageDialog(null, "Customer does not exist!", "Message", JOptionPane.PLAIN_MESSAGE);
        }
    }
    return found;
}

public void createPanel() {
    JPanel panel = new JPanel();
    panel.add(persNrLabel);
    panel.add(persNrInput);
    panel.add(button);

    add(panel);
}

A。这不起作用,但我需要它起作用-应该返回int:

public class CreateSavAccUI extends InputUI
{

public void performAction()
{   
String persNoInput=super.getFieldText();

B。为persNoInput方法提供值可以正常工作

   BankLogicInit.logic.createSavingsAccount(persNoInput);

然后,最后显示适当的视图:

 BankLogicInit.logic.createSavingsAccount("9000000");

我无法建立联系,为什么B起作用但A却不起作用。 解决方案,以使结构更改尽可能少?如果答案与MVC有关,我仍然不知道,因此所有指导 和结构的建议将不胜感激。提前非常感谢!

0 个答案:

没有答案