برای نمایش فایل های XML در JTabl اول یک فایل xml با نام Eslamshahr1400.xml میسازیم و داده های زیر رو توش میریزیم شما با نام دلخواه خودتون و داده های خودتون این فایل رو بسازید
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
<?xml version="1.0" encoding="UTF-8" ?> <root> <Azan ID="1"> <تاریخ>1400-01-01</تاریخ> <روز_هفته>يك شنبه</روز_هفته> <اذان_صبح>4:44</اذان_صبح> <طلوع_آفتاب>6:07</طلوع_آفتاب> <اذان_ظهر>12:12</اذان_ظهر> <غروب_آفتاب>18:18</غروب_آفتاب> <اذان_مغرب>18:36</اذان_مغرب> <نيمه_شب>23:30</نيمه_شب> </Azan> <Azan ID="2"> <تاریخ>1400-01-02</تاریخ> <روز_هفته>دو شنبه</روز_هفته> <اذان_صبح>5:42</اذان_صبح> <طلوع_آفتاب>7:06</طلوع_آفتاب> <اذان_ظهر>13:12</اذان_ظهر> <غروب_آفتاب>19:18</غروب_آفتاب> <اذان_مغرب>19:36</اذان_مغرب> <نيمه_شب>0:30</نيمه_شب> </Azan> </root> |
بعد توی فرمتون از کدهای زیر استفاده میکنید تا دیتای داخل xml در jtable نمایش داده بشه
فایل رو توی برنامتون فراخوانی میکنید
میگید تعداد نودها و زیر مجموعه هاشون رو بشماره و خط به خط توی فایل xml دنبال داده ها بگرده
شما برای هدر ستون هاتون توی تیبل یه مدل تعریف میکنید که با آیتم های توی فایل xml یکی باشه
و داده های بدست اومده رو توی jtable لود کنه
لایبرری های زیر رو فراخوانی کنید:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
import java.awt.Color; import java.awt.Component; import java.io.File; import java.io.IOException; import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.table.DefaultTableModel; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NamedNodeMap; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.xml.sax.SAXException; |
یک فرم با نام OqatSharee بسازید و کدهای زیر رو توی فرمتون بنویسید:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 |
public File xml = null; public Document dom = null; public DefaultTableModel model; public Document parseFile(File file) { try { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); dom = (Document) builder.parse(file); } catch (Exception e) { e.printStackTrace(); } return dom; } public Object getArticleInfo(String tagName, Element elem) { NodeList list = elem.getElementsByTagName(tagName); for (int i = 0; i < list.getLength(); ++i) { Node node = (Node) list.item(i); if (node.getNodeType() == Node.ELEMENT_NODE) { Node child = (Node) node.getFirstChild(); return child.getTextContent().trim(); } return null; } return null; } public void insertTableRows(DefaultTableModel tableModel, Document doc) { try { Element root = doc.getDocumentElement(); NodeList list = root.getElementsByTagName("Azan"); //بدست آوردن آی دی اذان String xmlFilePath = "Eslamshahr1400.xml"; DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document document = builder.parse(new File(xmlFilePath)); //شمارنده تعداد نود // NodeList list = document.getElementsByTagName("Customer"); System.out.println("Total of elements : " + list.getLength()); int count = list.getLength() - 1; System.out.println("count= " + count); //شمارنده تعداد نود //بدست آوردن آی دی اذان for (int i = 0; i < list.getLength(); ++i) { //بدست آوردن آی دی اذان NamedNodeMap namedNodeMap = list.item(i).getAttributes(); String value = namedNodeMap.getNamedItem("ID").getNodeValue(); System.out.println("value= " + value); //بدست آوردن آی دی اذان Element e = (Element) list.item(i); // System.out.println("Element= " + e); if (e.getNodeType() == Element.ELEMENT_NODE) { Object[] row = {value,getArticleInfo("تاریخ", e), getArticleInfo("روز_هفته", e), getArticleInfo("اذان_صبح", e), getArticleInfo("طلوع_آفتاب", e), getArticleInfo("اذان_ظهر", e), getArticleInfo("غروب_آفتاب", e), getArticleInfo("اذان_مغرب", e), getArticleInfo("نيمه_شب", e)}; tableModel.addRow(row); } // break; } tableModel.fireTableStructureChanged(); tableModel.fireTableDataChanged(); } catch (ParserConfigurationException ex) { Logger.getLogger(OqatSharee.class.getName()).log(Level.SEVERE, null, ex); } catch (SAXException ex) { Logger.getLogger(OqatSharee.class.getName()).log(Level.SEVERE, null, ex); } catch (IOException ex) { Logger.getLogger(OqatSharee.class.getName()).log(Level.SEVERE, null, ex); } } public void DefaultXMLTableModel() { xml = new File(System.getProperty("user.dir") + File.separator + "Eslamshahr1400.xml"); model = new DefaultTableModel() { public boolean isCellEditable(int row, int column) { return false; } }; model.addColumn("ID"); model.addColumn("تاریخ"); model.addColumn("روز هفته"); model.addColumn("اذان صبح"); model.addColumn("طلوع آفتاب"); model.addColumn("اذان ظهر"); model.addColumn("غروب آفتاب"); model.addColumn("ااذان مغرب"); model.addColumn("نيمه شب"); jTableAzan.setModel(model); jTableAzan.setGridColor(Color.blue); jTableAzan.setShowGrid(true); if (xml.exists() && xml.length() != 0) { dom = parseFile(xml); insertTableRows(model, dom); } } |
در نهایت تابع زیر را فراخوانی می کنید
|
1 |
DefaultXMLTableModel(); |
در مکانی که
|
1 |
DefaultXMLTableModel(); |
را فراخوانی میکنید با کد های زیر میتوانید jtable خود را راست چین کنید
|
1 2 3 4 5 6 7 8 9 10 11 |
//ساختن رندرر جدید برای راست چین DefaultTableCellRenderer rightRenderer = new DefaultTableCellRenderer(); // راست چین کردن کل تیبل rightRenderer.setHorizontalAlignment(SwingConstants.RIGHT); //راست چین کردن محتوای ستون اول و سوم jTableAzan.getColumnModel().getColumn(0).setCellRenderer(rightRenderer); jTableAzan.getColumnModel().getColumn(2).setCellRenderer(rightRenderer); // راست چین کردن کل تیبل jTableAzan.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT); // راست چین کردن لیبل های تیتر تیبل ((DefaultTableCellRenderer)jTableAzan.getTableHeader().getDefaultRenderer()).setHorizontalAlignment(JLabel.RIGHT); |





