java编程检查余额按钮
我试图通过编程“检查余额”按钮来显示正确的余额 在Checks类中使用getBalance()方法 但是我得到了错误消息 java:130:错误:无法从静态上下文引用非静态方法getBalance() JOptionPane.showMessageDialog(null,“您在美国的支票总额为”+checks.getBalance(), ^ 有人知道如何纠正这个吗 这是我的项目说明的链接java编程检查余额按钮,java,methods,joptionpane,Java,Methods,Joptionpane,我试图通过编程“检查余额”按钮来显示正确的余额 在Checks类中使用getBalance()方法 但是我得到了错误消息 java:130:错误:无法从静态上下文引用非静态方法getBalance() JOptionPane.showMessageDialog(null,“您在美国的支票总额为”+checks.getBalance(), ^ 有人知道如何纠正这个吗 这是我的项目说明的链接 import javax.swing.*; 导入java.awt.*; 导入java.awt.event.
import javax.swing.*;
导入java.awt.*;
导入java.awt.event.*;
公共类旅行支票扩展JFrame
{
专用静态最终整型宽度=440,高度=300;
私人产权、指示;
私人JButton-pesoB、francB、euroB、usB、checkbalanceB、exitB;
私人纽扣手;
公共旅行支票()
{
Title=新的JLabel(“兑现您的旅行支票”,SwingConstants.CENTER);
指令=新建JLabel(“单击与您的货币类型匹配的按钮”,SwingConstants.CENTER);
pesoB=新的JButton(TravelString.PESO_S);
bHandler=新按钮Handler();
pesoB.addActionListener(bHandler);
francB=新的JButton(TravelString.FRANC_S);
bHandler=新按钮Handler();
francB.addActionListener(bHandler);
euroB=新的JButton(TravelString.Euros);
bHandler=新按钮Handler();
euroB.addActionListener(bHandler);
usB=新的JButton(TravelString.US_S);
bHandler=新按钮Handler();
addActionListener(bHandler);
checkbalanceB=新的JButton(TravelString.CHECK);
bHandler=新按钮Handler();
检查balanceb.addActionListener(bHandler);
exitB=新的JButton(TravelString.EXIT_S);
bHandler=新按钮Handler();
exitB.addActionListener(bHandler);
SETTILE(“旅行支票机”);
容器窗格=getContentPane();
窗格.setLayout(新网格布局(8,0));
窗格。添加(标题);
窗格。添加(指示);
窗格。添加(pesoB);
窗格。添加(法国法郎);
窗格。添加(欧元);
添加(usB);
窗格。添加(支票余额b);
添加(exitB);
设置尺寸(宽度、高度);
setVisible(真);
setDefaultCloseOperation(关闭时退出);
}
公共类旅行字符串
{
公共静态最终字符串
比索=“墨西哥比索”,
瑞士法郎,
EURO_S=“欧元美元”,
US_=“美元”,
CHECK_S=“检查余额”,
退出_S=“退出”;
}
私有无效事务(字符串CurrencyString)
{
showMessageDialog(null,“使用了“+CurrencyString+”按钮),
“按钮消息演示”,JOptionPane.普通消息);
}
私有类ButtonHandler实现ActionListener
{
已执行的公共无效操作(操作事件e)
{
如果(例如getActionCommand().equals(TravelString.EXIT_))
系统出口(0);
else if(e.getActionCommand().equals(TravelString.PESO_))
交易(TravelString.比索);
else if(e.getActionCommand().equals(TravelString.FRANC_))
交易(TravelString.FRANC_S);
else if(e.getActionCommand().equals(TravelString.EURO_))
交易(TravelString.EURO\S);
else if(e.getActionCommand().equals(TravelString.US_S))
交易(TravelString.US_S);
else if(例如getActionCommand().equals(TravelString.CHECK))
JOptionPane.showMessageDialog(null,“您在美国的支票总额为”+checks.getBalance(),
“旅行支票余额”,JOptionPane。普通信息);
}
}
公共类检查
{
私人静态最终双
比索=2.0,法郎=3.0,欧元=4.0;
私人整数支票;
私人投资额;
私人国家;
私人双平衡;
公共支票(字符串s)
{
numberOfChecks=0;
面金额=0;
余额=0.0;
if(s.equals(TravelString.PESO|s)| s.equals(TravelString.FRANC|s)||
s、 等于(TravelString.EURO|s)| s.equals(TravelString.US|s))
国家=s;
其他的
{
国家=TravelString.US\u;
System.err.println(“#####坏检查构造函数调用。默认情况下为US检查###”);
}
}
public int getNumber()
{
退回支票数目;
}
公共字符串getCountry()
{
返回国;
}
公共int getFace()
{
退货金额;
}
公共双getBalance()
{
收益余额;
}
公共无效存款(整数编号、整数面额)
{
如果(数字>0&&面额>0)
{
如果(faceAmount==0)
{
面值=面额;
numberOfChecks=数量;
余额+=票面金额*数字*换算();
}
else if(面额==面额)
{
numberOfChecks+=编号;
余额+=票面金额*数字*换算();
}
其他的
System.err.println(“####存款中不存在面额错误();
}
其他的
System.err.println(“####存款中的非正参数错误()###”);
}
公开作废取款(整数)
{
如果(数字<0)
System.err.println(“#####提取()中的负参数错误###”);
else if(余额import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class TravelCheck extends JFrame
{
private static final int WIDTH = 440, HEIGHT = 300;
private JLabel Title, Instruct;
private JButton pesoB, francB, euroB, usB, checkbalanceB, exitB;
private ButtonHandler bHandler;
public TravelCheck()
{
Title = new JLabel("Cash Your Traveler's Check ", SwingConstants.CENTER);
Instruct = new JLabel("Click the button that matches your currency type", SwingConstants.CENTER);
pesoB = new JButton(TravelString.PESO_S) ;
bHandler = new ButtonHandler();
pesoB.addActionListener(bHandler);
francB = new JButton(TravelString.FRANC_S) ;
bHandler = new ButtonHandler();
francB.addActionListener(bHandler);
euroB = new JButton(TravelString.EURO_S) ;
bHandler = new ButtonHandler();
euroB.addActionListener(bHandler);
usB = new JButton(TravelString.US_S) ;
bHandler = new ButtonHandler();
usB.addActionListener(bHandler);
checkbalanceB = new JButton(TravelString.CHECK_S);
bHandler = new ButtonHandler();
checkbalanceB.addActionListener(bHandler);
exitB = new JButton(TravelString.EXIT_S);
bHandler = new ButtonHandler();
exitB.addActionListener(bHandler);
setTitle("Traveler's Check Machine");
Container pane = getContentPane();
pane.setLayout(new GridLayout(8,0));
pane.add(Title);
pane.add(Instruct);
pane.add(pesoB);
pane.add(francB);
pane.add(euroB);
pane.add(usB);
pane.add(checkbalanceB);
pane.add(exitB);
setSize(WIDTH, HEIGHT);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public class TravelString
{
public static final String
PESO_S = "Mexican peso",
FRANC_S = "Swiss franc",
EURO_S = "Euro dollar",
US_S = "U.S. dollar",
CHECK_S = "Check Balance",
EXIT_S = "Exit";
}
private void transaction(String CurrencyString)
{
JOptionPane.showMessageDialog(null, "The " + CurrencyString + " button was used",
"Button Message Demo", JOptionPane.PLAIN_MESSAGE);
}
private class ButtonHandler implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
if (e.getActionCommand().equals(TravelString.EXIT_S))
System.exit(0);
else if (e.getActionCommand().equals(TravelString.PESO_S))
transaction(TravelString.PESO_S);
else if (e.getActionCommand().equals(TravelString.FRANC_S))
transaction(TravelString.FRANC_S);
else if (e.getActionCommand().equals(TravelString.EURO_S))
transaction(TravelString.EURO_S);
else if (e.getActionCommand().equals(TravelString.US_S))
transaction(TravelString.US_S);
else if (e.getActionCommand().equals(TravelString.CHECK_S))
JOptionPane.showMessageDialog(null, "The amount of your checks total in US is" + Checks.getBalance(),
"Traveler's checks balance", JOptionPane.PLAIN_MESSAGE);
}
}
public class Checks
{
private static final double
PESO = 2.0, FRANC = 3.0, EURO = 4.0;
private int numberOfChecks;
private int faceAmount;
private String country;
private double balance;
public Checks (String s)
{
numberOfChecks = 0;
faceAmount = 0;
balance = 0.0;
if (s.equals(TravelString.PESO_S) || s.equals(TravelString.FRANC_S) ||
s.equals(TravelString.EURO_S) || s.equals(TravelString.US_S))
country = s;
else
{
country = TravelString.US_S;
System.err.println("### Bad Checks constructor invocation. US Check by default ###");
}
}
public int getNumber()
{
return numberOfChecks;
}
public String getCountry()
{
return country;
}
public int getFace()
{
return faceAmount;
}
public double getBalance()
{
return balance;
}
public void deposit (int number, int denomination)
{
if (number > 0 && denomination > 0)
{
if (faceAmount == 0)
{
faceAmount = denomination;
numberOfChecks = number;
balance += faceAmount * number * conversion();
}
else if (faceAmount == denomination)
{
numberOfChecks += number;
balance += faceAmount * number * conversion();
}
else
System.err.println("### Non-existent denomination error in deposit() ###");
}
else
System.err.println("### Non-positive parameter error in deposit() ###");
}
public void withdrawal(int number)
{
if (number < 0)
System.err.println("### Negative parameter error in withdrawal() ###");
else if (balance < number * faceAmount * conversion())
System.err.println("### Overdraw error in withdrawal() ###");
else
{
numberOfChecks -= number;
balance -= faceAmount * number * conversion();
if (numberOfChecks == 0)
faceAmount = 0;
}
}
private double conversion()
{
double retval = 0.0;
if (country.equals(TravelString.US_S))
retval = 1.0;
else if (country.equals(TravelString.PESO_S))
retval = 1.0/PESO;
else if (country.equals(TravelString.FRANC_S))
retval = 1.0/FRANC;
else if (country.equals(TravelString.EURO_S))
retval = 1.0/EURO;
return retval;
}
}
public static void main(String[] args)
{
TravelCheck travelcheck = new TravelCheck();
}
}
public TravelCheck()
{
Title = new JLabel("Cash Your Traveler's Check ", SwingConstants.CENTER);
Instruct = new JLabel("Click the button that matches your currency type", SwingConstants.CENTER);
Checks ch=new Checks(TravelString.US_S); //Object creation with US currency variable passed in contructor
....
OptionPane.showMessageDialog(null, "The amount of your checks total in US is" + ch.getBalance(),