Sampaikanlah Walau Satu Ayat

March 4, 2009

Reading XML Document with Java

Filed under: Berbagi Ilmu, Java — talazoft @ 9:34 am

This the simplest way to read XML file with java

import java.io.File;
import org.w3c.dom.Document;
import org.w3c.dom.*;

import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.DocumentBuilder;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;

public class ReadAndPrintXMLFile{

public static void main (String argv []){
try {

DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
Document doc = docBuilder.parse (new File(argv[0]));

// normalize text representation
doc.getDocumentElement ().normalize ();
System.out.println (”Root element of the doc is ” + doc.getDocumentElement().getNodeName());

NodeList listOfPersons = doc.getElementsByTagName(”person”);
int totalPersons = listOfPersons.getLength();
System.out.println(”Total no of people : ” + totalPersons);

for(int s=0; s

Node firstPersonNode = listOfPersons.item(s);
if(firstPersonNode.getNodeType() == Node.ELEMENT_NODE){

Element firstPersonElement = (Element)firstPersonNode;

//——-
NodeList firstNameList = firstPersonElement.getElementsByTagName(”first”);
Element firstNameElement = (Element)firstNameList.item(0);

NodeList textFNList = firstNameElement.getChildNodes();
System.out.println(”First Name : ” + ((Node)textFNList.item(0)).getNodeValue().trim());

//——-
NodeList lastNameList = firstPersonElement.getElementsByTagName(”last”);
Element lastNameElement = (Element)lastNameList.item(0);

NodeList textLNList = lastNameElement.getChildNodes();
System.out.println(”Last Name : ” + ((Node)textLNList.item(0)).getNodeValue().trim());

//—-
NodeList ageList = firstPersonElement.getElementsByTagName(”age”);
Element ageElement = (Element)ageList.item(0);

NodeList textAgeList = ageElement.getChildNodes();
System.out.println(”Age : ” + ((Node)textAgeList.item(0)).getNodeValue().trim());

//——

}//end of if clause

}//end of for loop with s var

}
catch (SAXParseException err) {
System.out.println (”** Parsing error” + “, line ” + err.getLineNumber () + “, uri ” + err.getSystemId ());
System.out.println(” ” + err.getMessage ());

}
catch (SAXException e) {
Exception x = e.getException ();
((x == null) ? e : x).printStackTrace ();
}
catch (Throwable t) {
t.printStackTrace ();
}
//System.exit (0);

}//end of main

}

note:
usage: java ReadAndPrintXMLFile “a XML file”

or you can download the example here

February 12, 2009

Tambah & kurang row JTable dengan JSpinner

Filed under: Berbagi Ilmu, Java — talazoft @ 10:11 am

Jumlah row dalam JTable dapat di ubah secara dinamis, misalnya dengan menggunakan JSpinner. Berikut adalah langkah-langkah menambahkan row dalam JTable dengan JSpinner
1. buat fungsi yang hanya menambahkan jumlah row saja dengan parameter Integer jumlah row
2. ambil jumlah kolom dalam table
3. buat array dua dimensi dengan batasan array jumlah row dan jumlah kolom
4. buat loop untuk mengusi value dari array yang telah dibuat sebelumnya
5. buat aksi di JSpinner

berikut ini adalah sourcenya

/*
* TableTest.java
*
* Created on 12 Februari 2009, 10:19
*/

package com.rizka.table;

import javax.swing.table.DefaultTableModel;

/**
* Kelas untuk mencontohkan bagaimana menambahkan row JTable dengan JSpinner
* @author Rizka Dwitama
*/
public class TableTest extends javax.swing.JFrame {

private final String[] title = new String[]{”Column 1″};

/** Creates new form TableTest */
public TableTest() {
initComponents();
}

/**
* Fungsi ini dapat menambahkan atau mengurangkan jumlah row dalam JTable.
* Tetapi value di setiap row diisi dengan null
* @param rowNum
*/
private void addReduceRows(int rowNum){
int columnCount = tableTest.getColumnCount();
String[][] data = new String[rowNum][columnCount];

for(int rowCtr=0;rowCtr<rowNum-1;rowCtr++){
for (int colCtr=0;colCtr<columnCount;colCtr++) {
data[rowCtr][colCtr] = null; // value tiap cell diisi dengan null, tetapi ini dapat diganti dengan yg lain
}
}
tableTest.setModel(new DefaultTableModel(data,title));
}
/** 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() {

jScrollPane1 = new javax.swing.JScrollPane();
tableTest = new javax.swing.JTable();
spinnerRow = new javax.swing.JSpinner();
jLabel1 = new javax.swing.JLabel();

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle(”Table test”);

tableTest.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{null},
{null},
{null},
{null}
},
new String [] {
“Column 1″
}
));
jScrollPane1.setViewportView(tableTest);

spinnerRow.setModel(new javax.swing.SpinnerNumberModel(Integer.valueOf(0), Integer.valueOf(0), null, Integer.valueOf(1)));
spinnerRow.setValue(tableTest.getRowCount());
spinnerRow.addChangeListener(new javax.swing.event.ChangeListener() {
public void stateChanged(javax.swing.event.ChangeEvent evt) {
spinnerRowStateChanged(evt);
}
});

jLabel1.setText(”Tambah & kurang row”);

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addContainerGap()
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 308, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jLabel1)
.addComponent(spinnerRow, javax.swing.GroupLayout.PREFERRED_SIZE, 56, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap())
);
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.PREFERRED_SIZE, 275, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(layout.createSequentialGroup()
.addComponent(jLabel1)
.addGap(18, 18, 18)
.addComponent(spinnerRow, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addContainerGap(14, Short.MAX_VALUE))
);

pack();
}//

private void spinnerRowStateChanged(javax.swing.event.ChangeEvent evt) {
// TODO add your handling code here:
int row = Integer.parseInt(spinnerRow.getValue().toString());
addReduceRows(row);
}

/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new TableTest().setVisible(true);
}
});
}

// Variables declaration - do not modify
private javax.swing.JLabel jLabel1;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JSpinner spinnerRow;
private javax.swing.JTable tableTest;
// End of variables declaration

}

January 27, 2009

JText Area dalam JTable

Filed under: Berbagi Ilmu, Java — talazoft @ 9:40 am

Defaultnya JTable merender JLable sebagai valuenya, dan JTable secara default pun sudah menyadiakan semacam cara untuk mengganti default renderernya. Dalam artikel ini saya akan memberitahukan bagaimana caranya merender JTextArea ke dalam JTable:

Langkah-langkah:
1. Buat class custom JTextArea
Kelas baru custom JTextArea ini harus extends JTextArea. Lalu buat dua buah syncronized method, method yang pertama adalah method yg bisa menambah action listener dengan parameter ActionListener, method meberikutnya adalah method yang tugasnya menghapus/remove action listener dengan parameter ActionListener
2. Buat class custom JTextArea renderer
Kelas ini tugasnya adalah merender custom JTextArea yang kita buat sebelumnya. Kelas ini harus extends custom JTextArea dan meng-implementasikan interface TableCellRenderer
3. Buat class custom renderernya
Kelas ini nantinya akan banyak kita gunakan
4. Setelah semua class selesai di buat selanjutnya kita akan coba menjalankanya

untuk contoh yang sudah saya buat silahkan download disini

January 22, 2009

JComboBox, JTextField, and JCheckBox di JTable bagian 2

Filed under: Berbagi Ilmu, Java — talazoft @ 11:45 am

/*
* EachRowEditorExample.java
*
*/

package com.rizka.utils.table;

import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.DefaultCellEditor;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;

/**
*
* @author Rizka Dwitama
*/
public class EachRowEditorExample extends JFrame {

public EachRowEditorExample(){
super(”EachRow Editor Example”);

DefaultTableModel dm = new DefaultTableModel();
dm.setDataVector( new Object[][]{{”Name” ,”MyName”},{”Gender”,”Male”}}, new Object[]{”Column1″,”Column2″});

JTable table = new JTable(dm);
JComboBox comboBox = new JComboBox();
comboBox.addItem(”Male”);
comboBox.addItem(”Female”);
EachRowEditor rowEditor = new EachRowEditor();
rowEditor.add(0, new DefaultCellEditor(new JTextField()));// add JTextField in a single cell, row 0, column 1
rowEditor.add(1, new DefaultCellEditor(comboBox));// add JComboBox in a single cell, row 1, column 1
table.getColumn(”Column2″).setCellEditor(rowEditor);

JScrollPane scroll = new JScrollPane(table);
getContentPane().add( scroll );
setSize( 400, 100 );
setVisible(true);
}

public static void main(String[] args) {
EachRowEditorExample frame = new EachRowEditorExample();
frame.addWindowListener( new WindowAdapter(){
@Override
public void windowClosing( WindowEvent e ) {
System.exit(0);
}
});
}
}

afwan gag ada skrinsotnya hehehe…..

JComboBox, JTextField, and JCheckBox di JTable bagian 1

Filed under: Berbagi Ilmu, Java — talazoft @ 11:44 am

Di bahasa pemrograman java anda dapat menambahkan JComboBox, JCheckBox, dan JTextFiled sebagai pengganti editor default dari table. Yah segitu aja dech kata2 bakunya, yang penting ni sourcenya. Contoh ada di bagian ke dua.

/*
* EachRowEditor.java
*
*/

package com.rizka.utils.table;

import java.awt.Component;
import java.util.EventObject;
import java.util.Hashtable;
import javax.swing.DefaultCellEdi

tor;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.event.CellEditorListener;
import javax.swing.table.TableCellEditor;

/**
*
* @author Rizka Dwitama
*/
public class EachRowEditor implements TableCellEditor{

protected Hashtable editors;
protected TableCellEditor editor, defaultEditor;

public EachRowEditor(){
editors = new Hashtable();
}

/*public EachRowEditor(JTextField textField) {
editors = new Hashtable();
defaultEditor = new DefaultCellEditor(textField);
}

public EachRowEditor(JCheckBox checkbox){
editors = new Hashtable();
defaultEditor = new DefaultCellEditor(checkbox);
}

public EachRowEditor(JComboBox comboBox) {
editors = new Hashtable();
defaultEditor = new DefaultCellEditor(comboBox);
} */

public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column){
editor = (TableCellEditor)editors.get(row);
if(editor != null){
return editor.getTableCellEditorComponent(table, value, isSelected, row, column);
}
else{
return null;
}
}

public void add(int row, TableCellEditor editor) {
if(editor!=null){
editors.put(new Integer(row), editor);
}
else{
//nothing to do here
}
}

public Object getCellEditorValue() {
return editor.getCellEditorValue();
}

public boolean isCellEditable(EventObject anEvent) {
//it must be returns true other ways it’ll be error
return true;
}

public boolean shouldSelectCell(EventObject anEvent) {
return editor.shouldSelectCell(anEvent);
}

public boolean stopCellEditing() {
return editor.stopCellEditing();
}

public void cancelCellEditing() {
editor.cancelCellEditing();
}

public void addCellEditorListener(CellEditorListener l) {
editor.addCellEditorListener(l);
}

public void removeCellEditorListener(CellEditorListener l) {
editor.removeCellEditorListener(l);
}

}

Buat Print Preview dgn Java

Filed under: Berbagi Ilmu, Java — talazoft @ 11:19 am

smalem lagi iseng nyari cara buat print preview pake java, alhamdulillah berhasil, nih langsung aja gw kasih sourcenya

/*
* PagePanel.java
*/

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.GridLayout;
import java.awt.print.PageFormat;
import java.awt.print.Printable;
import java.awt.print.PrinterException;
import javax.swing.BorderFactory;
import javax.swing.JPanel;
import javax.swing.border.EtchedBorder;

/**
* Kelas ini fungsinya buat ngerender sesuatu di simpan dalam JPanel yang bisa di print
*
* @author Rizka Dwitama
*/
public class PagePanel extends JPanel implements Printable
{
public static final Dimension A4_SIZE = new Dimension(595, 842);
public static final Dimension A3_SIZE = new Dimension(842, 595 * 2);
public static final Dimension A2_SIZE = new Dimension(595 * 2, 842 * 2);
public static Dimension DEFAULT_SIZE = A4_SIZE;
private GridLayout grid = new GridLayout(4, 2);
public int id = 0;

public PagePanel(int p_number)
{
initComponents();
this.id=p_number;
}

private void initComponents()
{
grid.setHgap(10);
grid.setVgap(10);
this.setMaximumSize(DEFAULT_SIZE);
this.setMinimumSize(DEFAULT_SIZE);
this.setPreferredSize(DEFAULT_SIZE);
this.setBackground(Color.white);
this.setLayout(grid);
this.setBorder(BorderFactory.createEtchedBorder(EtchedBorder.RAISED));
this.setSize(DEFAULT_SIZE);
}

@Override
public void paint(Graphics g)
{
super.paint(g);
g.setColor(Color.BLUE);
g.drawString(”This is page: “+id, 30, 30);
}

@Override
public int print(Graphics g, PageFormat pageFormat, int pageIndex) throws PrinterException
{
Graphics2D g2d = (Graphics2D) g;
g2d.translate(pageFormat.getImageableX(), pageFormat.getImageableY());
this.paint(g2d);
return (PAGE_EXISTS);
}
}

/*
* PagePanel.java
*/

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.print.Book;
import java.awt.print.PageFormat;
import java.awt.print.PrinterJob;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;

/**
* Kelas ini fungsinya buat nampilin kelas PagePanel skalian aplikasi buat ngejalaninnya
*
* @author Rizka Dwitama
*/
public class PrintPreview extends JFrame
{
private static final long serialVersionUID = 1L;
private BorderLayout borderLayout1 = new BorderLayout();
private FlowLayout flow = new FlowLayout();
private Font font = new Font(”Tahoma”, 0, 11);
private int panelsNo = 2;
private Dimension buttonDimension = new Dimension(120, 25);
private JPanel centerPanel = new JPanel();
private JScrollPane scroll = new JScrollPane(centerPanel);
private PagePanel[] previewPanel = null;
private JPanel operationsPanel = new JPanel();
private JButton nextButton = new JButton(”Next”);
private JButton previousButton = new JButton(”Previous”);
private JButton printButton = new JButton(”Print”);

public PrintPreview(int panelsNo)
{
try
{
this.panelsNo = panelsNo;
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setExtendedState(JFrame.MAXIMIZED_BOTH);
previewPanel = new PagePanel[this.panelsNo];
jbInit();
}
catch (Exception e)
{
e.printStackTrace();
}
}

private void jbInit() throws Exception
{
flow.setHgap(20);
flow.setVgap(20);
centerPanel.setLayout(flow);
centerPanel.setBackground(new Color(51, 51, 51));
centerPanel.setPreferredSize(new Dimension(800, panelsNo * (842 + 40)));

for (int i = 0; i < panelsNo; i++)
{
previewPanel[i] = new PagePanel(i + 1);
centerPanel.add(previewPanel[i], null);
}

printButton.setForeground(Color.green.darker());
printButton.addActionListener(new ActionListener()
{

public void actionPerformed(ActionEvent evt)
{
printActionPerformed(evt);
}
});

operationsPanel.setPreferredSize(new Dimension(10, 40));
operationsPanel.add(previousButton, null);
operationsPanel.add(nextButton, null);
operationsPanel.add(printButton, null);

Component comps[] = operationsPanel.getComponents();
for (Component comp : comps)
{
((JButton) comp).setFont(font);
((JButton) comp).setPreferredSize(buttonDimension);
}
this.setTitle(”Print”);
this.getContentPane().setLayout(borderLayout1);
this.setBounds(new Rectangle(10, 10, 650, 930));
this.getContentPane().add(scroll, BorderLayout.CENTER);
this.getContentPane().add(operationsPanel, BorderLayout.NORTH);
}

private void printActionPerformed(java.awt.event.ActionEvent event)
{

PrinterJob printJob = PrinterJob.getPrinterJob();
PageFormat pf = printJob.defaultPage();
pf.setOrientation(PageFormat.PORTRAIT);
Book book = new Book();
// First Page
book.append(previewPanel[0], pf);
// Second Page
book.append(previewPanel[1], pf);

printJob.setPageable(book);

if (printJob.printDialog())
{
try
{
printJob.print();
} catch (Exception ex)
{
ex.printStackTrace();
}
}
}

public static void main(String[] strings)
{
PrintPreview pr = new PrintPreview(2);
pr.setVisible(true);
}
}

Powered by WordPress