2011年7月24日 星期日

[java] (4) correct Big5 can display on list




  1. mysql> SET NAMES 'big5'; \\ Use this first







/*

* To change this template, choose Tools | Templates

* and open the template in the editor.

*/



/*

* test2.java

*

* Created on 2011/7/11, 下午 11:39:40

*/

package test;



import java.util.*;

import javax.swing.table.*;

import java.sql.*;





/**

*

* @author luke

*/

public class test21 extends javax.swing.JFrame {



/** Creates new form test2 */

public test21() {

initComponents();

}



/** This method is called from within the constructor to

* initialize the form.

* WARNING: Do NOT modify this code. The content of this method is

* always regenerated by the Form Editor.

*/

@SuppressWarnings("unchecked")

//

private void initComponents() {



jButton1 = new javax.swing.JButton();

jScrollPane1 = new javax.swing.JScrollPane();

data_jTable1 = new javax.swing.JTable();



setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);



jButton1.setText("列出");

jButton1.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

jButton1ActionPerformed(evt);

}

});



data_jTable1.setModel(new javax.swing.table.DefaultTableModel(

new Object [][] {

{null, null},

{null, null}

},

new String [] {

"ID", "Name"

}

) {

Class[] types = new Class [] {

java.lang.Integer.class, java.lang.String.class

};

boolean[] canEdit = new boolean [] {

false, true

};



public Class getColumnClass(int columnIndex) {

return types [columnIndex];

}



public boolean isCellEditable(int rowIndex, int columnIndex) {

return canEdit [columnIndex];

}

});

jScrollPane1.setViewportView(data_jTable1);

data_jTable1.getColumnModel().getColumn(0).setResizable(false);



javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());

getContentPane().setLayout(layout);

layout.setHorizontalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(layout.createSequentialGroup()

.addGap(27, 27, 27)

.addComponent(jButton1)

.addGap(31, 31, 31)

.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 465, Short.MAX_VALUE)

.addGap(204, 204, 204))

);

layout.setVerticalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(layout.createSequentialGroup()

.addContainerGap()

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 194, Short.MAX_VALUE)

.addComponent(jButton1))

.addGap(220, 220, 220))

);



pack();

}//



// 模組類別 (AbstractTableModel)import javax.swing.table.*;

class MyTableModel extends AbstractTableModel

{

// import java.util.*;

private ArrayList colname;

private ArrayList data;



public MyTableModel(ResultSet rs)

{

try{



// 取得欄位數量

ResultSetMetaData rm = rs.getMetaData();

int cnum = rm.getColumnCount();

colname = new ArrayList(cnum);



// 取得欄位名稱

for(int i=1; i<=cnum; i++){

colname.add(rm.getColumnName(i));

}



// 取得列

data = new ArrayList();

while(rs.next()){

ArrayList rowdata = new ArrayList();

for(int i=1; i<=cnum; i++){

rowdata.add(rs.getObject(i).toString());

}

data.add(rowdata);

}

}

catch(Exception e){

e.printStackTrace();

}

}

public int getRowCount()

{

return data.size();

}

public int getColumnCount()

{

return colname.size();

}

public Object getValueAt(int row, int column)

{

ArrayList rowdata = (ArrayList)data.get(row);

return rowdata.get(column);

}

public String getColumnName(int column)

{

return (String) colname.get(column);

}

}



private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

// TODO add your handling code here:

Connection conn = null;



// ?useUnicode=true&characterEncoding=big5 very important

String url = "jdbc:mysql://localhost:3306/testdb?useUnicode=true&characterEncoding=big5";

String user = "testuser";

String password = "test623";



try {





conn = DriverManager.getConnection(url, user, password);



Statement st = conn.createStatement();



String qry = "SELECT * FROM tabaco";

ResultSet rs = st.executeQuery(qry);



data_jTable1.setModel(new MyTableModel(rs));



rs.close();

st.close();

conn.close();



} catch (SQLException ex) {

System.out.println(ex.getMessage());

}



}



/**

* @param args the command line arguments

*/

public static void main(String args[]) {

java.awt.EventQueue.invokeLater(new Runnable() {



public void run() {

new test21().setVisible(true);

}

});

}

// Variables declaration - do not modify

private javax.swing.JTable data_jTable1;

private javax.swing.JButton jButton1;

private javax.swing.JScrollPane jScrollPane1;

// End of variables declaration

}



Reference :



  1. http://www.javaworld.com.tw/jute/post/view?bid=21&id=35895&sty=1&tpg=1&age=0


0 意見:

張貼留言