スクロールさせる為に、データを重複させています
Eclipse での配置例です
LboxTable は、こちらにあります
public class Main extends JFrame {
private static final long serialVersionUID = 1L;
private JPanel jContentPane = null;
private JPanel jPanel = null;
private LboxTable lboxTable = null;
/**
* This method initializes jPanel
*
* @return javax.swing.JPanel
*/
private JPanel getJPanel() {
if (jPanel == null) {
jPanel = new JPanel();
jPanel.setLayout(new BoxLayout(getJPanel(), BoxLayout.X_AXIS));
jPanel.setBounds(new Rectangle(11, 67, 497, 220));
jPanel.add(getLboxTable(), null);
}
return jPanel;
}
/**
* This method initializes lboxTable
*
* @return lightbox.LboxTable
*/
private JScrollPane getLboxTable() {
if (lboxTable == null) {
lboxTable = new LboxTable();
lboxTable.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent e) {
// ダブルクリックの処理
if ( e.getClickCount() == 2 ) {
int row = lboxTable.convertRowIndexToModel(lboxTable.rowAtPoint(e.getPoint()));
int col = lboxTable.convertColumnIndexToModel(lboxTable.columnAtPoint(e.getPoint()));
System.out.println(row+"/"+col);
}
}
});
lboxTable.AddColumn("COLUMN_1");
lboxTable.AddColumn("COLUMN_2");
lboxTable.SetColumnTitle("COLUMN_1", "タイトル");
lboxTable.SetColumnTitle("COLUMN_2", "URL");
lboxTable.SetColumnWidth("COLUMN_1", 150);
lboxTable.SetColumnWidth("COLUMN_2", 320);
try {
// ターゲット
URL url = new URL("http://winofsql.jp/exlink.xml");
// 接続オブジェクト
HttpURLConnection http = (HttpURLConnection)url.openConnection();
// GET メソッド
http.setRequestMethod("GET");
// 接続
http.connect();
// XML 取得の準備
DocumentBuilderFactory dbfactory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = dbfactory.newDocumentBuilder();
// InputStream から Documentオブジェクトを取得
Document doc = builder.parse(http.getInputStream());
// ここから先は一般的な DOM の処理
// ルート要素
Element root = doc.getDocumentElement();
// System.out.println(root.getNodeName());
// <row> 〜 </row>
// getElementsByTagName が一番直感的で確実
NodeList nl1 = root.getElementsByTagName("row");
// 一つ目のノード
Node nd1 = nl1.item(0);
// System.out.println(nd1.getNodeName());
// <fld3>名称</fld3>
// Node を Element にキャストして getElementsByTagName を使う
NodeList nl2 = ((Element)nd1).getElementsByTagName("fld3");
NodeList nl3 = ((Element)nd1).getElementsByTagName("fld2");
// 最初の row ブロックの fld3 の 列挙
for( int i = 0; i < nl2.getLength(); i++ ) {
// <fld3>
// System.out.println((nl2.item(i)).getNodeName());
// 要素に挟まれた値は、実際はテキストノードの中にあります
int nRow = lboxTable.AddRow();
lboxTable.SetColumnText(nRow, "COLUMN_1", (nl2.item(i)).getFirstChild().getNodeValue());
lboxTable.SetColumnText(nRow, "COLUMN_2", (nl3.item(i)).getFirstChild().getNodeValue());
nRow = lboxTable.AddRow();
lboxTable.SetColumnText(nRow, "COLUMN_1", (nl2.item(i)).getFirstChild().getNodeValue());
lboxTable.SetColumnText(nRow, "COLUMN_2", (nl3.item(i)).getFirstChild().getNodeValue());
}
// 接続解除
http.disconnect();
}
catch (Exception e) {
}
}
return lboxTable.root;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO 自動生成されたメソッド・スタブ
SwingUtilities.invokeLater(new Runnable() {
public void run() {
Main thisClass = new Main();
thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
thisClass.setVisible(true);
}
});
}
/**
* This is the default constructor
*/
public Main() {
super();
initialize();
}
/**
* This method initializes this
*
* @return void
*/
private void initialize() {
this.setSize(531, 339);
this.setContentPane(getJContentPane());
this.setTitle("JFrame");
}
/**
* This method initializes jContentPane
*
* @return javax.swing.JPanel
*/
private JPanel getJContentPane() {
if (jContentPane == null) {
jContentPane = new JPanel();
jContentPane.setLayout(null);
jContentPane.add(getJPanel(), null);
}
return jContentPane;
}
} // @jve:decl-index=0:visual-constraint="10,10"