java - JFrame 自动计算
问题描述
我在使用 Netbeans 的 JAVA 中自动计算文本字段时遇到问题
我的问题是我是否会在文本字段中输入数值以进行自动添加,然后在文本字段中输入数值到(票价和税金和通信%),我将在其中进入字段自动计算,那么我将如何获得这些数字的结果在单击提交按钮之前,文本字段 (Comm) 和 (Cost Price) 中的值。
try { String sql = "insert into ticketing (Date,LPO,PassName,Route,AirlineCode,TicketNum,SellingPrice, Contact, Officer,Fare,Tax,comm%,comm,CostPrice,System,Remart)" + "values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","");
pst = conn.prepareStatement(sql);
//pst.setInt(1, Integer.parseInt(id.getText()));
pst.setString(1, Date.getText());
pst.setString(2, LPO.getText());
pst.setString(3, PassName.getText());
pst.setString(4, Route.getText());
pst.setString(5, AirCode.getText());
pst.setString(6, TikNum.getText());
pst.setString(7, SellPrice.getText());
String Conta;
Conta = Cont.getSelectedItem().toString();
pst.setString (8,Conta);
String Officer;
Officer = Offic.getSelectedItem().toString();
pst.setString (9,Officer);
pst.setString(10, Fare.getText());
pst.setString(11, Tax.getText());
pst.setString(12, commper.getText());
pst.setString(13, comm.getText());
pst.setString(14, CostPrice.getText());
String Sys;
Sys = System.getSelectedItem().toString();
pst.setString (15,Sys);
pst.setString(16, Remark.getText());
pst.executeUpdate();
JOptionPane.showMessageDialog(null, "insertion successful");
conn.close();
}catch (SQLException e){
JOptionPane.showMessageDialog(null, e);
}
怎么做到呢。
谢谢 ...........
解决方案
我不得不用来DocumentFilter
解决我只是分享我的代码它可能会帮助将来的人,也有人会搜索知识
DocumentFilter df = new DocumentFilter() {
@Override
public void insertString(DocumentFilter.FilterBypass fb, int i, String string, AttributeSet as) throws BadLocationException {
if (isDigit(string)) {
super.insertString(fb, i, string, as);
calcAndSetTotal();
}
}
@Override
public void remove(DocumentFilter.FilterBypass fb, int i, int i1) throws BadLocationException {
super.remove(fb, i, i1);
calcAndSetTotal();
}
@Override
public void replace(DocumentFilter.FilterBypass fb, int i, int i1, String string, AttributeSet as) throws BadLocationException {
if (isDigit(string)) {
super.replace(fb, i, i1, string, as);
calcAndSetTotal();
}
}
private boolean isDigit(String string) {
for (int n = 0; n < string.length(); n++) {
char c = string.charAt(n);//get a single character of the string
//System.out.println(c);
if (!Character.isDigit(c)) {//if its an alphabetic character or white space
return false;
}
}
return true;
}
void calcAndSetTotal() {
int sum = 0;
int fr = 0;
int pc = 0;
int tax = 0;
int total = 0;
if (!Fare.getText().isEmpty()) {
fr= Integer.parseInt(Fare.getText());//we must add this
}
if (!Tax.getText().isEmpty()) {
tax= Integer.parseInt(Tax.getText());//we must add this
}
if (!commper.getText().isEmpty()) {
pc= Integer.parseInt(commper.getText());//we must subtract this
}
sum =(int) (fr *(pc*0.01));
total = (int) (fr + tax - sum);
comm.setText(String.valueOf(sum));
CostPrice.setText(String.valueOf(total));
}
};
推荐阅读
- reactjs - material-ui-popup-state 更改按钮颜色
- c++ - 避免 C++ 中部分虚构的表达式的 NAN
- c# - 如何对 IdentityServer4 管道实施业务特定规则?
- xamarin - 蓝牙设备名称在 Xamarin 表单中使用蓝牙 LE 返回 null
- json - Flutter 将自定义堆叠对象转换为 json
- c++ - 代码出乎意料地给出了一个无限循环
- node.js - Nodemon 服务器无法启动
- r - 如何使用 R 中的计数函数(如 NROW)过滤 mutate() 中的数据?
- python - 具有来自用户的多个原始输入的测试功能
- javascript - AngularJS - 如何动态更改组件控制器?