WindowsBuilder のインストールとプロジェクトの作成 Pleiades All in One で、Windows アプリを作成する手順( WindowBuilder + Swing デザイナー or SWT デザイナー[JFace] ) JFace の アプリケーションウインドウを追加します パースペクティブを Java EE に変更 Oxygen で、WindowBuilder エディターにフォントの設定が効かないので、Java エディタも開いて併用します。 ( Java エディタ では、CTRL + プラスキー でフォントが大きくなります ) 使えないコントロールを削除 toolBarManager と statusLineManager はコードでしかメンテできそうにないので、メニューでテストは十分なので削除します。 関連する 必要ない Override メソッドも削除します 最後に必要なくなった呼び出し部分も削除します ▼ この時点で以下のようなソースになります( タイトルは変更しています )
import org.eclipse.jface.action.MenuManager; import org.eclipse.jface.window.ApplicationWindow; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; public class Main extends ApplicationWindow { // ******************************* // コンストラクタ // ******************************* public Main() { super(null); createActions(); addMenuBar(); } // ******************************* // 画面作成 // ******************************* @Override protected Control createContents(Composite parent) { Composite container = new Composite(parent, SWT.NONE); return container; } // ******************************* // コンストラクタからの初期処理 // ******************************* private void createActions() { } // ******************************* // メニュー // ******************************* @Override protected MenuManager createMenuManager() { MenuManager menuManager = new MenuManager("menu"); return menuManager; } // ******************************* // エントリポイント // ******************************* public static void main(String args[]) { try { Main window = new Main(); window.setBlockOnOpen(true); window.open(); Display.getCurrent().dispose(); } catch (Exception e) { e.printStackTrace(); } } // ******************************* // ウインドウ ( Shell ) // ******************************* @Override protected void configureShell(Shell newShell) { super.configureShell(newShell); // ウインドウのタイトル newShell.setText("MySQL データ表示"); } // ******************************* // ウインドウサイズ // ******************************* @Override protected Point getInitialSize() { return new Point(635, 405); } }
テーブルのサイズをウインドウのサイズ変更と同期させるprotected Control createContents(Composite parent) { Composite container = new Composite(parent, SWT.NONE); container.addControlListener(new ControlAdapter() { @Override public void controlResized(ControlEvent e) { // org.eclipse.swt.graphics.Rectangle; Rectangle size = container.getClientArea(); table.setSize(size.width-21, size.height-24); } }); table = new Table(container, SWT.BORDER | SWT.FULL_SELECTION); table.setBounds(10, 10, 599, 322); table.setHeaderVisible(true); table.setLinesVisible(true); return container; }
メニューをデザイナから追加します 1) MenuManager を選択 2) メニュー部分をクリック 3) 新規を選択 4) メニューアイテム部分をクリック 5) メニューアイテムが一つ作成される コードも同時に作成されているので、Override の run を追加して loadMySQL("select * from 社員マスタ"); を追加// ******************************* // コンストラクタからの初期処理 // ******************************* private void createActions() { { action = new Action("New Action") { @Override public void run() { table.removeAll(); loadMySQL("select * from 社員マスタ"); } }; } } protected void loadMySQL(String string) { }MySQL 処理部分 private Connection conn = null; private Statement stmt = null; private ResultSet rs = null; private int maxRows = 20;
protected void loadMySQL(String string) { try { // MySQL Connector/J 接続 conn = (Connection) DriverManager.getConnection( // mysql-connector-java-8.0.11 で serverTimezone が必要 "jdbc:mysql://localhost/lightbox?user=root&password=&characterEncoding=UTF-8&serverTimezone=JST" ); stmt = (Statement) conn.createStatement(); rs = stmt.executeQuery(string); // select の結果の列情報の取得 ResultSetMetaData rsmd = (ResultSetMetaData) rs.getMetaData(); // 列数 int columnCount = rsmd.getColumnCount(); // 前回のテーブル列を全て削除 int tableColumnCount = table.getColumnCount(); TableColumn tableColumnWork = null; for( int i = tableColumnCount - 1; i >= 0; i--) { tableColumnWork = table.getColumn(i); tableColumnWork.dispose(); } // 列名 TableColumn tableColumn = null; for( int i = 1; i <= columnCount; i++) { tableColumn = new TableColumn(table, SWT.NONE); tableColumn.setWidth(100); tableColumn.setText(rsmd.getColumnName(i)); } TableItem tableItem = null; SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd"); int countRow = 0; while( rs.next() && countRow < maxRows ) { countRow++; String[] columnData = new String[columnCount]; for( int i = 1; i <= columnCount; i++) { if ( rsmd.getColumnTypeName(i).equals("DATETIME") ) { columnData[i-1] = sdf.format(rs.getDate(i)); } else { columnData[i-1] = rs.getString(i); } } tableItem = new TableItem(table, SWT.NONE); tableItem.setText(columnData); } rs.close(); stmt.close(); conn.close(); } catch (SQLException ex) { // handle any errors System.out.println("SQLException: " + ex.getMessage()); System.out.println("SQLState: " + ex.getSQLState()); System.out.println("VendorError: " + ex.getErrorCode()); } }
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.sql.Statement; 行をダブルクリックした時の行データの取得
table.addMouseListener(new MouseAdapter() { @Override public void mouseDoubleClick(MouseEvent e) { int row_no = table.getSelectionIndex(); // 行 は 0 以上 if ( row_no >= 0 ) { // タイトル部分の表示 TableColumn[] tableColumns = table.getColumns(); for( TableColumn column: tableColumns ) { System.out.println( column.getText() ); } // 行部分の表示 TableItem tableItem = table.getItem(row_no); int columnCount = tableColumns.length; for( int i = 0; i < columnCount; i++ ) { System.out.println( tableItem.getText(i)); } } } });
関連する記事 WindowBuilder JFace : WEB より JSON を取得して Table に表示する
|
【Pleiadesの最新記事】
- ロリポップ用ログインブックマークレット( ユーザ専用ページ・phpMyAdmin・WEBメーラ )
- WindowsBuilder の JFaceで アプリケーションウインドウとダイアログを使用した基本処理
- Pleiades Oxygen の XAMPP の TOMCAT を Pleiades の JDK8 で動作させる
- Pleiades Eclipse 4.7 Oxygen 2 Windows 64bit Ultimate Full Edition のインストールといろいろな準備
- Pleiades Oxygen 2 の XAMPP 内の MercuryMail をインストールして使用する
- XAMPP 内の MySQL を利用可能にしてテストデータ(販売管理)を登録する
- Pleiades Oxygen 2 の XAMPP 内の FileZilla Server をインストールして使用する