導入Java . awt . *;
導入Java . awt . event . *;
導入Java . util . *;
導入javax . swing . jscrollpane;
導入javax . swing . jpanel;
導入javax . swing . jtable;
import javax . swing . unsupportedlookandfeelexception;
導入javax . swing . table . defaulttablemodel;
導入Java . math . bigdecimal;
導入Java . text . decimal format;
導入javax . swing . table . defaulttablecellrenderer;
導入javax . swing . table . tablecolumnmodel;
導入javax . swing . table . table column;
導入Java . text . number format;
導入Java . util . locale;
導入javax . swing . event . *;
導入javax . swing . plaf . synth . synthlookandfeel;
導入javax . swing . ui manager;
導入Java . io . inputstream;
導入Java . text . parse exception;
公共類BankLoan擴展JFrame實現ActionListener,KeyListener{
private jbutton button = new jbutton(“calculation“);
Private jLabel _ Money = New jLabel(“貸款總額”);
private JTextField text _ monney = new JTextField();
Private jlabel _ tax = new jlabel(“貸款利率”);
private JTextField text _ tax = new JTextField();
private jlabel label _ pt = new jlabel(“貸款期限“);
private JTextField text _ pt = new JTextField();
PrivatejLabel _ time = newjLabel(“開始時間(年/月)“);
private JTextField text _ timey = new JTextField();
private JTextField text _ timem = new JTextField();
private jdialog dialog = new jdialog(this,“prompt”,true);
私有標簽dialog _ label = new label(“請在計算前填寫完整信息”,標簽。居中);
私有JTable表= new JTable();
public Vector srcdata = new Vector();
Loan loan_now =新貸款();
公共銀行貸款()
Super(“銀行貸款還款的利息計算工具”);
table . addkey listener(this);
final String【】column names = {“分期付款”、“本金余額”、“每月償還本金”、“每月償還利息”和“每月償還本息”};
Vector srcdataname = new Vector();
srcdataname . add(column names【0】);
srcdataname . add(column names【1】);
srcdataname . add(column names【2】);
srcdataname . add(column names【3】);
srcdataname . add(column names【4】);
container container = this . getcontentpane();
this . setsize(650,400);
this . set location(50,100);
this . setdefaultcloseoperation(EXIT _ ON _ CLOSE);
JPanel panel 1 = new JPanel(new Java . awt . flow layout());
JPanel panel 2 = new JPanel(new GridLayout(2,6));
JPanel panel 3 = new JPanel(new GridLayout(1,1));
//JPanel panel 4 = new JPanel(new GridLayout(1,3));
panel 2 . add(label _ monney);
panel 2 . add(text _ monney);
JLabel label _ yuan = new JLabel(“meta“);
panel 2 . add(label _袁);
panel2.add(標簽_稅收);
panel 2 . add(text _ tax);
jlabel label _ yuan 1 = new jlabel(“%/month“);
panel 2 . add(label _ yuan 1);
panel 2 . add(label _ pt);
panel 2 . add(text _ pt);
JLabel label _ yuann = new JLabel(“year“);
panel 2 . add(label _ yuann);
panel 2 . add(label _ time);
panel 2 . add(text _ timey);
panel 2 . add(text _ timem);
panel 1 . add(panel 2);
panel 1 . add(panel 3);
panel3.add(按鈕);
this . add(panel 1,BorderLayout。北);
button . addactionlistener(this);
DefaultTableModel model = new DefaultTableModel(srcdata,srcdataname);//javax . swing . table . defaulttablemodel . defaulttablemodel(向量數據,向量列名)
JScrollPane scroll pane = new JScrollPane(table);
table.setModel(模型);
容器。add(scroll pane,BorderLayout。居中);
//this . set visible(true);
dialog . setsize(250,130);
dialog.add(對話框_標簽);
dialog . setdefaultcloseoperation(HIDE _ ON _ CLOSE);
//table . getvalueat(3,2);
}
已執行公共void操作(操作事件e ){
if(e . getsource()= = button ){
if(text _ monney . gettext()。長度()== 0
|| text_pt.getText()。長度()== 0
|| text_tax.getText()。長度()== 0
|| text_timey.getText()。長度()== 0
|| text_timem.getText()。length()= = 0 ){
dialog . set location(this . getx()+70,this . gety()+60);
dialog . set visible(true);
}否則{
if(integer . parse int(text _ timem . gettext())& lt;= 12
& amp& ampinteger . parse int(text _ timem . gettext())& gt;= 1)//輸入合法
{
srcdata . clear();
loan _ now . init(text _ monney . gettext(),text_tax.getText(),
text_pt.getText()、text_timey.getText()、text_timem
。getText());
//Vector data add = new Vector(5);
//Vector data addx = new Vector(20);
for(int x = 0;x & ltinteger . parse int(text _ pt . gettext())* 12;x++) {
srcdata . add(loan _ now。get result(x));
table . repaint();
table . update ui();
}
DefaultTableCellRenderer TCR = new DefaultTableCellRenderer();
TableColumnModel Columnmodel = table . getcolumnmodel();
tcr.setBackground(新顏色(220,220,150));
column model . getcolumn(0)。setCellRenderer(TCR);
//table column t column = new table column();
table . setcolumnselectionallowed(true);//設置是否可以選擇。默認值為false。
table . setcolumnselectioninterval(0,0);
table . setselectionbackground(color . white);//
}//開始計算
否則{
Dialog_label.setText(“起始月份應在1和12之間,請重新輸入!“);
dialog . set location(this . getx()+70,this . gety()+60);
dialog . set visible(true);
}
//table . setvalueat(new String(“alsfj“),3,2);
system . out . print(table . getvalue at(3,2)+“SDF“);
}
}
}
公共靜態void main(String args【】){
//嘗試{
//SynthLookAndFeel synth = new SynthLookAndFeel();
//synth . load(swing test . class . getresourceasstream(“leagsoftsynth . XML“),
//swing test . class);
////ui manager . addauxiliarylookandfeel(synth);
//ui manager . setlookandfeel(synth);
// } catch(異常錯誤){
//ex . printstacktrace();
// }
bank loan a = new bank loan();
a . set visible(true);
}
公共無效更改()
{
table.setValueAt(新字符串(“alsfj“),3,2);
}
@覆蓋
公共void按鍵(按鍵事件e ){
int key code = e . get key code();
if(key code = = key event。VK _回車){
change();
//this.setValueAt(新字符串(“alsfj“),this.currentRow,this . current column);
}
}
@覆蓋
公共無效密鑰釋放(密鑰事件e ){
int key code = e . get key code();
if(key code = = key event。VK _回車){
table.setValueAt(新字符串(“alsfj“),3,2);
//this.setValueAt(新字符串(“alsfj“),this.currentRow,this . current column);
}
}
@覆蓋
公共void鍵入的(key event e ){
// TODO自動生成的方法存根
}
}
導入Java . util . *;
導入Java . math . bigdecimal;
導入Java . text . number format;
導入Java . util . locale;
類別貸款{
private int loan _ money
私人浮動貸款_稅;
私人利息貸款_ pt
私有浮點Rtrunmm
私人利息貸款_年;
私人利息貸款_月;
公共void init(字符串str_money,字符串str_tax,字符串str_pt,字符串str_year,字符串str_month)
{
this . loan _ money = integer . parse int(str _ money);
this . loan _ pt = integer . parse int(str _ pt)* 12;
這個。rtrunmm =(float)this . loan _ money/(float)this . loan _ pt;
this . loan _ tax = float . parse float(str _ tax);
this . loan _ year = integer . parse int(str _ year);
this . loan _ month = integer . parse int(str _ month);
}
公共向量get result(int x)
{
string str =““;
Vector data 1 =新向量(5);
number format number format = number format . get number instance(區域設置。中國);
str = string . value of(this . loan _ year)+“year”+(string . value of(this . loan _ month))+“month”;
data 1 . add(str);
if((this . loan _ month+1)& gt;12)
{ this . loan _ year++;this . loan _ month = 1;}
else { this . loan _ month++;}
str =“@“+number format . format(new BigDecimal(string . value of(this . loan _ money-((x)* this。Rtrunmm)))。setScale(2,BigDecimal。ROUND _ HALF _ UP));
data 1 . add(str);
str =“@“+number format . format(new BigDecimal(string . value of(this。Rtrunmm)。setScale(2,BigDecimal。ROUND _ HALF _ UP));
data 1 . add(str);
str =“@“+number format . format(new BigDecimal(string . value of(this . loan _ tax *(loan _ money-(x * this。rtrunmm))/100)。setScale(2,BigDecimal。ROUND _ HALF _ UP));
data 1 . add(str);
str =“@“+number format . format(new BigDecimal(string . value of(this。rtrunmm+(this . loan _ tax *(loan _ money-(x * this。rtrunmm))/100))。setScale(2,BigDecimal。ROUND _ HALF _ UP));
data 1 . add(str);
返回數據1;
}
}
壹共兩節課,妳跑著看。用妳的寫進寫出,妳改變它。