import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.BoxLayout; import javax.swing.JButton; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.SwingUtilities; import javax.swing.table.DefaultTableModel; public class TestSwing05 extends JPanel { private static final long serialVersionUID = 1L; private static final String CONNECT_BUTTON_TEXT = "接続"; private static final String DISCONNECT_BUTTON_TEXT = "切断"; private static final String LABEL_TEXT_NOT_CONNECTED = "未接続"; private static final String LABEL_TEXT_CONNECTING = "接続中"; private static final String LABEL_TEXT_CONNECTED = "接続済"; private static final String LABEL_TEXT_DISCONNECTING = "切断中"; private static final String LABEL_TEXT_ERROR = "エラー"; private JButton connectButton = null; private JButton disconnectButton = null; private JLabel statusLabel = null; private JPanel panel = null; public TestSwing05() { // create component this.connectButton = new JButton(CONNECT_BUTTON_TEXT); this.connectButton.setEnabled(true); this.connectButton.addActionListener(new ConnectActionHandler()); this.disconnectButton = new JButton(DISCONNECT_BUTTON_TEXT); this.disconnectButton.setEnabled(false); this.disconnectButton.addActionListener(new DisconnectActionHandler()); this.statusLabel = new JLabel(LABEL_TEXT_NOT_CONNECTED); JPanel dbPanel = new JPanel(); dbPanel.add(this.connectButton); dbPanel.add(this.disconnectButton); dbPanel.add(this.statusLabel); this.panel = new JPanel(); this.panel.setLayout(new BoxLayout(this.panel, BoxLayout.Y_AXIS)); this.panel.add(dbPanel); setLayout(new BorderLayout()); add(this.panel, BorderLayout.EAST); } private class ConnectActionHandler implements ActionListener { public void actionPerformed(ActionEvent e) { Thread connectThread = new ConnectThread(); connectThread.start(); } } private class ConnectThread extends Thread { public void run() { statusLabel.setText(LABEL_TEXT_CONNECTING); changeConnectTypeButtonEnabledSame(false); SwingUtilities.invokeLater(new Runnable() { public void run() { connectDB(); } }); } } private void connectDB() { try { TestSwingDB testSwingDB = TestSwingMain.getTestSwingDB(); testSwingDB.connect(); this.statusLabel.setText(LABEL_TEXT_CONNECTED); changeConnectTypeButtonEnabled(true); TestSwing04 testSwing04 = TestSwingMain.getTestSwing04(); testSwing04.setGetAllRecordsButtonEnabled(true); testSwing04.setInsertModifyDeleteButtonEnabled(false, false, false); } catch (TestSwingException testEx) { this.statusLabel.setText(LABEL_TEXT_ERROR); changeConnectTypeButtonEnabled(false); } } private class DisconnectActionHandler implements ActionListener { public void actionPerformed(ActionEvent e) { Thread disconnectThread = new DisconnectThread(); disconnectThread.start(); } } private class DisconnectThread extends Thread { public void run() { statusLabel.setText(LABEL_TEXT_DISCONNECTING); changeConnectTypeButtonEnabledSame(false); SwingUtilities.invokeLater(new Runnable() { public void run() { disconnectDB(); } }); } } private void disconnectDB() { try { TestSwingDB testSwingDB = TestSwingMain.getTestSwingDB(); testSwingDB.disconnect(); this.statusLabel.setText(LABEL_TEXT_NOT_CONNECTED); changeConnectTypeButtonEnabled(false); TestSwing04 testSwing04 = TestSwingMain.getTestSwing04(); testSwing04.setGetAllRecordsButtonEnabled(false); testSwing04.setInsertModifyDeleteButtonEnabled(false, false, false); testSwing04.setStatusLabel(null); TestSwing02 testSwing02 = TestSwingMain.getTestSwing02(); DefaultTableModel tableModel = testSwing02.getTableModel(); while (tableModel.getRowCount() > 0) { tableModel.removeRow(0); } TestSwing03 testSwing03 = TestSwingMain.getTestSwing03(); testSwing03.setDescriptionField(null); testSwing03.setUrlField(null); } catch (TestSwingException testEx) { this.statusLabel.setText(LABEL_TEXT_ERROR); changeConnectTypeButtonEnabled(true); } } private void changeConnectTypeButtonEnabled(boolean flg) { this.connectButton.setEnabled(!flg); this.disconnectButton.setEnabled(flg); } private void changeConnectTypeButtonEnabledSame(boolean flg) { this.connectButton.setEnabled(flg); this.disconnectButton.setEnabled(flg); } }