/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
import JSplitDmeo.* ;
import java.awt.BorderLayout ;
import java.awt.Dimension ;
import java.awt.FlowLayout ;
import java.awt.Font ;
import java.awt.LayoutManager ;
import java.awt.event.ActionEvent ;
import java.awt.event.ActionListener ;
import java.awt.event.MouseEvent ;
import java.awt.event.MouseListener ;
import java.util.Vector ;
import javax.swing.JButton ;
import javax.swing.JFrame ;
import javax.swing.JOptionPane ;
import javax.swing.JPanel ;
import javax.swing.JScrollPane ;
import javax.swing.JSplitPane ;
import javax.swing.JTable ;
import javax.swing.table.DefaultTableModel ;
/**
*
* @author I'msimple
*/
public class DemoJTable {
Vector< String> vec;
public DemoJTable
( String text
) {
initContainer( ) ;
initComponent( ) ;
setAction( ) ;
frame.setTitle ( text) ;
frame.setVisible ( true ) ;
}
private void setAction( ) {
//Them du lieu moi lần nhấn button
@Override
vec.add ( "15d9" ) ;
vec.add ( "Le Minh Hiep" ) ;
vec.add ( "20" ) ;
table.addRow ( vec) ;
}
} ) ;
///Cick vao de xoa dong
@Override
int row = jtb.getSelectedColumnCount ( ) ;
if ( row==- 1 ) return ;
table.removeRow ( row) ;
}
} ) ;
//Mỗi lần click vào từng dòng thì hiển thị thông tin chi tiết
@Override
int row = jtb.getSelectedRow ( ) ;
if ( row==- 1 ) return ;
String ma
= jtb.
getValueAt ( row,
0 ) + "" ; String ten
= jtb.
getValueAt ( row,
1 ) + "" ; String tuoi
= jtb.
getValueAt ( row,
2 ) + "" ;
JOptionPane .
showMessageDialog ( null ,
"Code : " + ma
+ "Name :" + ten
+ "Age : " + tuoi
) ;
}
@Override
}
@Override
}
@Override
}
@Override
}
} ) ;
}
private void initContainer( ) {
frame.
setDefaultCloseOperation ( JFrame .
EXIT_ON_CLOSE ) ; frame.setSize ( 400 ,600 ) ;
frame.setLocationRelativeTo ( null ) ;
}
private void initComponent( ) {
//Chia panel thành 2 phần left , right
// Thêm table vào jpnRight
//Chinh kích thuoc cho panel
jpnLeft.
setPreferredSize ( new Dimension ( 200 ,
0 ) ) ; jsp00.setOneTouchExpandable ( true ) ;
//Ta chia jpnRight thanh 2 phan
//Chinh kich thuoc jpnTop lon len
jpnTop.
setPreferredSize ( new Dimension ( 0 ,
200 ) ) ; jsp01.setOneTouchExpandable ( true ) ;
//Tao table roi them vao JPanel right
table.addColumn ( "Code" ) ;
table.addColumn ( "Name" ) ;
table.addColumn ( "Age" ) ;
//add du lieu bang mang tinh
String row1
[ ] = { "15d1" ,
"Nguyen Van A" ,
"19" } ; String row2
[ ] = { "15d2" ,
"Nguyen Van B" ,
"21" } ; String row3
[ ] = { "15d3" ,
"Nguyen Van C" ,
"23" } ; table.addRow ( row1) ;
table.addRow ( row2) ;
table.addRow ( row2) ;
//add du lieu bang vector
vec = new Vector<> ( ) ;
vec.add ( "15d6" ) ;
vec.add ( "Nguyen Van L" ) ;
vec.add ( "40" ) ;
table.addRow ( vec) ;
//Dua JTabel vao JScrollPane
jsc.
setFont ( new Font ( "Font.BOLD" ,
20 ,
20 ) ) ;
//Tao Jbutton
jpnButton.add ( jbtThem) ;
jpnButton.add ( jbtXoa) ;
//add cac giao dien
frame.add ( jsp00) ;
}
public static void main
( String [ ] args
) { new DemoJTable( "Chia đôi màn hình" ) ;
}
}
LyoKICogVG8gY2hhbmdlIHRoaXMgbGljZW5zZSBoZWFkZXIsIGNob29zZSBMaWNlbnNlIEhlYWRlcnMgaW4gUHJvamVjdCBQcm9wZXJ0aWVzLgogKiBUbyBjaGFuZ2UgdGhpcyB0ZW1wbGF0ZSBmaWxlLCBjaG9vc2UgVG9vbHMgfCBUZW1wbGF0ZXMKICogYW5kIG9wZW4gdGhlIHRlbXBsYXRlIGluIHRoZSBlZGl0b3IuCiAqLwoKCmltcG9ydCBKU3BsaXREbWVvLio7CmltcG9ydCBqYXZhLmF3dC5Cb3JkZXJMYXlvdXQ7CmltcG9ydCBqYXZhLmF3dC5EaW1lbnNpb247CmltcG9ydCBqYXZhLmF3dC5GbG93TGF5b3V0OwppbXBvcnQgamF2YS5hd3QuRm9udDsKaW1wb3J0IGphdmEuYXd0LkxheW91dE1hbmFnZXI7CmltcG9ydCBqYXZhLmF3dC5ldmVudC5BY3Rpb25FdmVudDsKaW1wb3J0IGphdmEuYXd0LmV2ZW50LkFjdGlvbkxpc3RlbmVyOwppbXBvcnQgamF2YS5hd3QuZXZlbnQuTW91c2VFdmVudDsKaW1wb3J0IGphdmEuYXd0LmV2ZW50Lk1vdXNlTGlzdGVuZXI7CmltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwppbXBvcnQgamF2YXguc3dpbmcuSkJ1dHRvbjsKaW1wb3J0IGphdmF4LnN3aW5nLkpGcmFtZTsKaW1wb3J0IGphdmF4LnN3aW5nLkpPcHRpb25QYW5lOwppbXBvcnQgamF2YXguc3dpbmcuSlBhbmVsOwppbXBvcnQgamF2YXguc3dpbmcuSlNjcm9sbFBhbmU7CmltcG9ydCBqYXZheC5zd2luZy5KU3BsaXRQYW5lOwppbXBvcnQgamF2YXguc3dpbmcuSlRhYmxlOwppbXBvcnQgamF2YXguc3dpbmcudGFibGUuRGVmYXVsdFRhYmxlTW9kZWw7CgovKioKICoKICogQGF1dGhvciBJJ21zaW1wbGUKICovCnB1YmxpYyBjbGFzcyBEZW1vSlRhYmxlIHsKICAgIAogICAgSkZyYW1lIGZyYW1lOwogICAgSlBhbmVsIGpwbkxlZnQsanBuUmlnaHQ7CiAgICBKU3BsaXRQYW5lIGpzcDAwOwogICAgSlNwbGl0UGFuZSBqc3AwMTsKICAgIEpUYWJsZSBqdGI7CiAgICBEZWZhdWx0VGFibGVNb2RlbCB0YWJsZSA7CiAgICAKICAgIEpTY3JvbGxQYW5lIGpzYzsKICAgIExheW91dE1hbmFnZXIgYm9yZGVyOwogICAgVmVjdG9yPFN0cmluZz4gdmVjOwogICAgSkJ1dHRvbiBqYnRUaGVtLGpidFhvYTsKICAgIAoKICAgIHB1YmxpYyBEZW1vSlRhYmxlKFN0cmluZyB0ZXh0KSB7CiAgICAgICAgCiAgICAgICAgaW5pdENvbnRhaW5lcigpOwogICAgICAgIAogICAgICAgIGluaXRDb21wb25lbnQoKTsKICAgICAgICAKICAgICAgICBzZXRBY3Rpb24oKTsKICAgICAgICBmcmFtZS5zZXRUaXRsZSh0ZXh0KTsKICAgICAgICBmcmFtZS5zZXRWaXNpYmxlKHRydWUpOwogICAgfQoKICAgIHByaXZhdGUgdm9pZCBzZXRBY3Rpb24oKSB7CiAgICAJCiAgICAJLy9UaGVtIGR1IGxpZXUgbW9pIGzhuqduIG5o4bqlbiBidXR0b24KICAgICAgICBqYnRUaGVtLmFkZEFjdGlvbkxpc3RlbmVyKG5ldyBBY3Rpb25MaXN0ZW5lcigpIHsKICAgICAgICAgICAgQE92ZXJyaWRlCiAgICAgICAgICAgIHB1YmxpYyB2b2lkIGFjdGlvblBlcmZvcm1lZChBY3Rpb25FdmVudCBlKSB7CiAgICAgICAgICAgICAgICB2ZWMuYWRkKCIxNWQ5Iik7CiAgICAgICAgICAgICAgICB2ZWMuYWRkKCJMZSBNaW5oIEhpZXAiKTsKICAgICAgICAgICAgICAgIHZlYy5hZGQoIjIwIik7CiAgICAgICAgICAgICAgICB0YWJsZS5hZGRSb3codmVjKTsKICAgICAgICAgICAgICAgIAogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICAgICAgCiAgICAgICAgCiAgICAgICAgLy8vQ2ljayB2YW8gZGUgeG9hIGRvbmcKICAgICAgICBqYnRYb2EuYWRkQWN0aW9uTGlzdGVuZXIobmV3IEFjdGlvbkxpc3RlbmVyKCkgewogICAgICAgICAgICBAT3ZlcnJpZGUKICAgICAgICAgICAgcHVibGljIHZvaWQgYWN0aW9uUGVyZm9ybWVkKEFjdGlvbkV2ZW50IGUpIHsKICAgICAgICAgICAgICAgIGludCByb3cgPSBqdGIuZ2V0U2VsZWN0ZWRDb2x1bW5Db3VudCgpOwogICAgICAgICAgICAgICAgaWYocm93PT0tMSkgcmV0dXJuOwogICAgICAgICAgICAgICAgdGFibGUucmVtb3ZlUm93KHJvdyk7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgIH0KICAgICAgICB9KTsKICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgICAvL03hu5dpIGzhuqduIGNsaWNrIHbDoG8gdOG7q25nIGTDsm5nIHRow6wgaGnhu4NuIHRo4buLIHRow7RuZyB0aW4gY2hpIHRp4bq/dAogICAgICAganRiLmFkZE1vdXNlTGlzdGVuZXIobmV3IE1vdXNlTGlzdGVuZXIoKSB7CiAgICAgICAgICAgCiAgICAgICAgICAgCiAgICAgICAgICAgIEBPdmVycmlkZQogICAgICAgICAgICBwdWJsaWMgdm9pZCBtb3VzZUNsaWNrZWQoTW91c2VFdmVudCBlKSB7CiAgICAgICAgICAgICAgICBpbnQgcm93ID0ganRiLmdldFNlbGVjdGVkUm93KCk7CiAgICAgICAgICAgICAgICBpZihyb3c9PS0xKSByZXR1cm47CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIFN0cmluZyBtYSA9IGp0Yi5nZXRWYWx1ZUF0KHJvdywwKSArICIiOwogICAgICAgICAgICAgICAgIFN0cmluZyB0ZW4gPSBqdGIuZ2V0VmFsdWVBdChyb3csMSkgKyAiIjsKICAgICAgICAgICAgICAgICAgU3RyaW5nIHR1b2kgPSBqdGIuZ2V0VmFsdWVBdChyb3csMikgKyIiOwogICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgSk9wdGlvblBhbmUuc2hvd01lc3NhZ2VEaWFsb2cobnVsbCwiQ29kZSA6ICIrbWEgKyAiTmFtZSA6Iit0ZW4gKyAiQWdlICA6ICIrdHVvaSk7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgfQoKICAgICAgICAgICAgQE92ZXJyaWRlCiAgICAgICAgICAgIHB1YmxpYyB2b2lkIG1vdXNlUHJlc3NlZChNb3VzZUV2ZW50IGUpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbigiTm90IHN1cHBvcnRlZCB5ZXQuIik7IC8vVG8gY2hhbmdlIGJvZHkgb2YgZ2VuZXJhdGVkIG1ldGhvZHMsIGNob29zZSBUb29scyB8IFRlbXBsYXRlcy4KICAgICAgICAgICAgfQoKICAgICAgICAgICAgQE92ZXJyaWRlCiAgICAgICAgICAgIHB1YmxpYyB2b2lkIG1vdXNlUmVsZWFzZWQoTW91c2VFdmVudCBlKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24oIk5vdCBzdXBwb3J0ZWQgeWV0LiIpOyAvL1RvIGNoYW5nZSBib2R5IG9mIGdlbmVyYXRlZCBtZXRob2RzLCBjaG9vc2UgVG9vbHMgfCBUZW1wbGF0ZXMuCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIEBPdmVycmlkZQogICAgICAgICAgICBwdWJsaWMgdm9pZCBtb3VzZUVudGVyZWQoTW91c2VFdmVudCBlKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24oIk5vdCBzdXBwb3J0ZWQgeWV0LiIpOyAvL1RvIGNoYW5nZSBib2R5IG9mIGdlbmVyYXRlZCBtZXRob2RzLCBjaG9vc2UgVG9vbHMgfCBUZW1wbGF0ZXMuCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIEBPdmVycmlkZQogICAgICAgICAgICBwdWJsaWMgdm9pZCBtb3VzZUV4aXRlZChNb3VzZUV2ZW50IGUpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbigiTm90IHN1cHBvcnRlZCB5ZXQuIik7IC8vVG8gY2hhbmdlIGJvZHkgb2YgZ2VuZXJhdGVkIG1ldGhvZHMsIGNob29zZSBUb29scyB8IFRlbXBsYXRlcy4KICAgICAgICAgICAgfQoKICAgICAgICAgICAKCiAgICAgICAgICAgIAoKICAgICAgICAgICAgCiAgICAgICAgfSk7CiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICB9CiAgICBwcml2YXRlIHZvaWQgaW5pdENvbnRhaW5lcigpIHsKICAgICAgICAgIGZyYW1lID0gbmV3IEpGcmFtZSgpOwogICAgICAgIGZyYW1lLnNldExheW91dChuZXcgQm9yZGVyTGF5b3V0KCkpOwogICAgICAgIGZyYW1lLnNldERlZmF1bHRDbG9zZU9wZXJhdGlvbihKRnJhbWUuRVhJVF9PTl9DTE9TRSk7CiAgICAgICAgZnJhbWUuc2V0U2l6ZSg0MDAsNjAwKTsKICAgICAgICBmcmFtZS5zZXRMb2NhdGlvblJlbGF0aXZlVG8obnVsbCk7CiAgICB9CgogICAgcHJpdmF0ZSB2b2lkIGluaXRDb21wb25lbnQoKSB7CiAgICAJCiAgICAJLy9DaGlhIHBhbmVsIHRow6BuaCAyIHBo4bqnbiBsZWZ0ICwgcmlnaHQKICAgICAgIC8vIFRow6ptIHRhYmxlIHbDoG8ganBuUmlnaHQKICAgICAgICBqcG5MZWZ0ID0gbmV3IEpQYW5lbCgpOwogICAgICAgIAogICAgICAgIC8vQ2hpbmgga8OtY2ggdGh1b2MgY2hvIHBhbmVsCiAgICAgICAganBuTGVmdC5zZXRQcmVmZXJyZWRTaXplKG5ldyBEaW1lbnNpb24oMjAwLCAwKSk7CiAgICAgICAganBuUmlnaHQgPSBuZXcgSlBhbmVsKCk7CiAgICAgICAganBuUmlnaHQuc2V0TGF5b3V0KG5ldyBCb3JkZXJMYXlvdXQoKSk7CiAgICAgICAganNwMDAgPSBuZXcgSlNwbGl0UGFuZShKU3BsaXRQYW5lLkhPUklaT05UQUxfU1BMSVQsIGpwbkxlZnQsIGpwblJpZ2h0KTsKICAgICAgICBqc3AwMC5zZXRPbmVUb3VjaEV4cGFuZGFibGUodHJ1ZSk7CiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgLy9UYSBjaGlhIGpwblJpZ2h0IHRoYW5oIDIgcGhhbgogICAgICAgIEpQYW5lbCBqcG5Ub3AgPSBuZXcgSlBhbmVsKCk7CiAgICAgICAganBuVG9wLnNldExheW91dChuZXcgQm9yZGVyTGF5b3V0KCkpOwogICAgICAgIEpQYW5lbCBqcG5Cb3R0b20gPSBuZXcgSlBhbmVsKCk7CiAgICAgICAganNwMDEgPSBuZXcgSlNwbGl0UGFuZShKU3BsaXRQYW5lLlZFUlRJQ0FMX1NQTElULCBqcG5Ub3AsIGpwbkJvdHRvbSk7CiAgICAgICAgLy9DaGluaCBraWNoIHRodW9jIGpwblRvcCBsb24gbGVuCiAgICAgICAganBuVG9wLnNldFByZWZlcnJlZFNpemUobmV3IERpbWVuc2lvbigwLDIwMCkpOwogICAgICAgIGpzcDAxLnNldE9uZVRvdWNoRXhwYW5kYWJsZSh0cnVlKTsKICAgICAgICAKICAgICAgICAvL1RhbyB0YWJsZSByb2kgdGhlbSB2YW8gSlBhbmVsIHJpZ2h0CiAgICAgICAgdGFibGUgPSBuZXcgRGVmYXVsdFRhYmxlTW9kZWwoKTsKICAgICAgIAogICAgICAgIHRhYmxlLmFkZENvbHVtbigiQ29kZSIpOwogICAgICAgIHRhYmxlLmFkZENvbHVtbigiTmFtZSIpOwogICAgICAgIHRhYmxlLmFkZENvbHVtbigiQWdlIik7CiAgICAgICAgLy9hZGQgZHUgbGlldSBiYW5nIG1hbmcgdGluaAogICAgICAgIFN0cmluZyByb3cxIFtdID0geyIxNWQxIiwiTmd1eWVuIFZhbiBBIiwiMTkiIH07CiAgICAgICAgU3RyaW5nIHJvdzIgW10gPSB7IjE1ZDIiLCJOZ3V5ZW4gVmFuIEIiLCIyMSIgfTsKICAgICAgICBTdHJpbmcgcm93MyBbXSA9IHsiMTVkMyIsIk5ndXllbiBWYW4gQyIsIjIzIiB9OwogICAgICAgIHRhYmxlLmFkZFJvdyhyb3cxKTsKICAgICAgICB0YWJsZS5hZGRSb3cocm93Mik7CiAgICAgICAgdGFibGUuYWRkUm93KHJvdzIpOwogICAgICAgIC8vYWRkIGR1IGxpZXUgYmFuZyB2ZWN0b3IKICAgICAgICAgdmVjID0gbmV3IFZlY3Rvcjw+KCk7CiAgICAgICAgdmVjLmFkZCgiMTVkNiIpOwogICAgICAgIHZlYy5hZGQoIk5ndXllbiBWYW4gTCIpOwogICAgICAgIHZlYy5hZGQoIjQwIik7CiAgICAgICAgdGFibGUuYWRkUm93KHZlYyk7CiAgICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgLy9EdWEgSlRhYmVsIHZhbyBKU2Nyb2xsUGFuZQogICAgICAgIGp0YiA9IG5ldyBKVGFibGUodGFibGUpOwogICAgICAgIGpzYyA9IG5ldyBKU2Nyb2xsUGFuZShqdGIsCiAgICAgICAgICAgICAgICBKU2Nyb2xsUGFuZS5WRVJUSUNBTF9TQ1JPTExCQVJfQUxXQVlTLAogICAgICAgICAgICAgICAgSlNjcm9sbFBhbmUuSE9SSVpPTlRBTF9TQ1JPTExCQVJfQUxXQVlTKTsKICAgICAgICBqc2Muc2V0Rm9udChuZXcgRm9udCgiRm9udC5CT0xEIiwyMCwyMCkpOwogICAgICAgIAogICAgICAgIC8vVGFvIEpidXR0b24KICAgICAgICBKUGFuZWwganBuQnV0dG9uID0gbmV3IEpQYW5lbChuZXcgRmxvd0xheW91dCgpKTsKICAgICAgICBqYnRUaGVtID0gbmV3IEpCdXR0b24oIkFERCIpOwogICAgICAgIGpidFhvYSA9IG5ldyBKQnV0dG9uKCJSRU1PVkUiKTsKICAgICAgICBqcG5CdXR0b24uYWRkKGpidFRoZW0pOwogICAgICAgIGpwbkJ1dHRvbi5hZGQoamJ0WG9hKTsKICAgICAgICAgICAgICAgIAogICAgICAgIGpwblRvcC5hZGQoanNjLEJvcmRlckxheW91dC5DRU5URVIpOwogICAgICAgIGpwblRvcC5hZGQoanBuQnV0dG9uLEJvcmRlckxheW91dC5TT1VUSCk7CiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgICAvL2FkZCBjYWMgZ2lhbyBkaWVuCiAgICAgICAgZnJhbWUuYWRkKGpzcDAwKTsKICAgICAgICBqcG5SaWdodC5hZGQoanNwMDEsQm9yZGVyTGF5b3V0LkNFTlRFUik7CiAgICAgfQoKICAgIAogICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CiAgICAgICAgbmV3IERlbW9KVGFibGUoIkNoaWEgxJHDtGkgbcOgbiBow6xuaCIpOwogICAgfQogICAgCn0K