首先是界面設計要點:
~~~~JButton:
Dimension preferredSize=new Dimension(150,40);//改變按鈕大小
button.setPreferredSize(preferredSize);
~~~~JLabel:
JLabel label=new JLabel("月份",JLabel.CENTER);//設定文字居中
label.setFont(new Font("宋體",Font.PLAIN,16));//設定字型
label.setBounds(0,0,1200,670);//設定位置及大小
label.setForeground(Color.red);//設定顔色
ImageIcon icon=new ImageIcon(D:/Eclipse/cat.jpg);//一般用絕對路徑好,src/cat.jpg,轉出exe時圖檔不顯示
label.setIcon(icon);//标簽顯示圖檔
~~~~JTable//JTabel table = new JTabel();
table.setRowHeight(50);//指定每一行的 行高為50
table.setRowHeight(2,30);//指定第2行的高度為30
table.getTableHeader().setFont(new Font("Dialog",0,19));//設定标題字型及大小
table.setFont(new Font("Dialog",0,19))//設定表格字型及大小
for(int i=0;i<11;i++){
TableColumn column=table.getColumnModel().getColumn(i);
column.setPreferredWidth(80);//指定所有列寬為80
if(i<6){column.setPreferredWidth(80)}//指定前6列列寬為80
}
String[] Names={};
String[][]data={}
DefaultTableModel tablemodel=new DefaultTableModel(data,Names);
JTable table=new JTable(tabelmodel);
~~~~布局管理器
1、GridBagLayout,方法
public void addg(Component c,GridBagConstraints constraints,int x,int y,int w,int h) {
//此方法用來添加控件到容器中
constraints.gridx=x;
constraints.gridy=y;
constraints.gridwidth=w;
constraints.gridheight=h;
add(c,constraints);
}
GridBagConstraints constrains=new GridBagConstraints();
constrains.fill=GridBagConstraints.NONE; //這個可以保證大小一緻
constrains.anchor=GridBagConstraints.WEST; //左對齊
constrains.weightx=2; //這兩行是關鍵,如果不設定,表示元件大小固定,不管面闆如何變,
constrains.weighty=2;
panel.addg(jlmonth,constrains,0,0,1,1);
2、flowLayout
panel.setLayout(new FlowLayout(3,10,10));//3列,間隔10
panel.add(label1);panel.add(text1);panel.add(label11);
jf.getContentPane().add(panel);
_______________________________________________________________________________________
其次是資料庫的增加,删除,修改。
~~~~進入資料庫步驟:1、進入指令行輸入D: 2、輸入cd Program Files\mysql-5.5.62-winx64\bin
3、輸入net start mysql 4、輸入mysql -uroot -p 5、輸入密碼
6、修改密碼方法mysql> set password for 使用者名@localhost = password('新密碼');
mysql> set password for [email protected] = password('123');
7、檢視資料庫show databases;------use test;-----show tables;-----select * from student;
~~~~連接配接資料庫方法Connection conn=getConn();
public static Connection getConn() {
Connection conn=null;
try {
Class.forName("com.mysql.jdbc.Driver");
conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","密碼");
}catch(ClassNotFoundException e) {
e.printStackTrace();
}catch(SQLException e) {
e.printStackTrace();
}
return conn;
}
~~~~~将資料插入資料庫
PreparedStatement ps=null;
String sql = "INSERT INTO account(month,zhaoh,jianh,taobao,cash,stock,asset,remarks) "+"values(?,?,?,?,?,?,?,?)";
try {
ps=conn.prepareStatement(sql);
ps.setString(1, jtmonth.getText());ps.setString(2, jtzhaoh.getText());
ps.setString(3, jtjianh.getText());ps.setString(4, jttaobao.getText());
ps.setString(5, jtcash.getText());ps.setString(6, jtstock.getText());
int sum=Integer.parseInt(jtzhaoh.getText())+...+Integer.parseInt(jtstock.getText());
ps.setString(7, String.valueOf(sum));ps.setString(8, jtremarks.getText());
//總資金為2到6相加,先相加存到資料庫中,
ps.executeUpdate();//sql必須是insert,update,delete語句,或者為空
}catch (SQLException b){
b.printStackTrace();
}finally{
try{
conn.close(); System.out.println("MySQL 關閉成功");
}catch (SQLException c){
System.out.println("MySQL 關閉失敗 "); c.printStackTrace();
}
}
~~~~查詢資料庫輸入到JTable中
try{
PreparedStatement ps = null; ps=conn.prepareStatement("SELECT * FROM account");
ResultSet res = null; res=ps.executeQuery();//執行查詢
while (res.next())
{
temp= res.getString(7);//總資産需先記下,以計算資産變化
if(num==1) {
String[]row={res.getString(1),res.getString(2),res.getString(3),
res.getString(4),res.getString(5),res.getString(6),res.getString(7),
"",res.getString(8)};
tablemodel.addRow(row);
}else{
int assetchange=Integer.parseInt(res.getString(7))-
Integer.parseInt(oldtemp);
String [] row= {res.getString(1),res.getString(2),res.getString(3),
res.getString(4),res.getString(5),res.getString(6),res.getString(7),
String.valueOf(assetchange),res.getString(8)};
//資産變化,直接計算然後輸入到JTable中。
tablemodel.addRow(row);
}
oldtemp=temp;System.out.println(oldtemp);//記錄上月資産
}
System.out.println("load ok!");
}catch(Exception q){
q.printStackTrace(); System.out.println("go die");
}finally {
try {
res.close(); ps.close(); conn.close();
System.out.println("close ok");
}catch (SQLException o){
o.printStackTrace(); System.out.println("go die 2");
}
}
~~~~改變資料庫資料
String sql = "SELECT month,zhaoh,jianh,taobao,cash,stock,asset,remarks FROM account";//8
ResultSet res=null; Statement stat=null;
stat=conn.createStatement();
res=stat.executeQuery(sql);
while(res.next())
{
if (res.getString(1).equals(jtmonth.getText())) {
String sql2="UPDATE account SET zhaoh='"+jtzhaoh.getText()+"' WHERE
month='"+jtmonth.getText()+"'";//注意此處的格式,用where設定條件,用'"+value+"'表值
...
try{
stat=conn.createStatement();
stat=executeUpdate(sql2);
...
}...
}
~~~~删除資料庫資料
String sql = "DELETE FROM account WHERE month='"+jtmonth.getText()+"'";
//jtmonth中的資料為條件,删除行。
try {
stat=conn.createStatement();
stat.executeUpdate(sql);
}catch (SQLException e) {
e.printStackTrace();
}finally {
try{
stat.close();conn.close(); System.out.println("MySQL 關閉成功");
}catch (SQLException c){
System.out.println("MySQL 關閉失敗 "); c.printStackTrace();
}
}