我对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有关,我仍然不知道,因此所有指导 和结构的建议将不胜感激。提前非常感谢!