JFrame 自动计算
Posted
技术标签:
【中文标题】JFrame 自动计算【英文标题】:JFrame Auto Calculation 【发布时间】:2019-06-13 22:59:20 【问题描述】:我在使用 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);
怎么做。
谢谢............
【问题讨论】:
问:如何从 Java/Swing JTextField 中读取值?答:使用.getText()
。问:当你尝试时会发生什么?如果不是“getText()”,你的问题到底是什么?
@paulsm4 正如您在所附照片中看到的那样,有 5 个文本字段,一旦我输入前三个字段,我想在 comm 和 Cost price 中获得自动结果,对于 comm 来说是 Fare and percent of comm ex ....您有 fare =1000 和 comm % =5 所以在 comm 中将显示 50 然后计算成本价格 = fare + tax -comm% 所以我希望这个文本字段字段自动如何做到这一点跨度>
“正如您在附加的照片中看到的那样” - 问题中没有图像。请发布minimal reproducible example。该问题与数据库无关,因此请对一些数据进行硬编码以显示您要执行的操作。
@c0der 在编码之前有一个链接会显示照片,请检查。
【参考方案1】:
我不得不使用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));
;
【讨论】:
以上是关于JFrame 自动计算的主要内容,如果未能解决你的问题,请参考以下文章