Code import java.awt.event.ActionEvent; import java.sql.*; import java.util.Vector;
import javax.swing.*;
@SuppressWarnings("serial") public class swingDB extends JFrame { //этот внутренний класс инкапсулирует нашу команду class SimpleAction extends AbstractAction { SimpleAction() { putValue(NAME, "Привет. Action!"); putValue(SHORT_DESCRIPTION, "Это подсказка"); putValue(MNEMONIC_KEY, new Integer('a')); } // в этом методе обрабатывается событие, как //и в прежнем методе ActionListener public void actionPerformed(ActionEvent e) { // можно выключить команду, не зная. // к каким компонентам она присоединена //System.out.println (JFrame.getFrames()[0]); //JFrame.getFrames()[0].dispose(); System.exit(1); setEnabled(false); // изменим надпись putValue(NAME, "Прощай, Action!"); } } class MsgBox extends JDialog { public MsgBox(String ss) { super(); setDefaultCloseOperation(DISPOSE_ON_CLOSE); setTitle("Ошибочка"); JPanel jp = new JPanel(); JLabel lab1 = new JLabel(ss); jp.add(lab1); Action action = new SimpleAction(); JButton but = new JButton(action); but.setText("Закрыть"); jp.add(but); getContentPane().add(jp); setSize(150,100); setVisible(true); } } static Connection con; /** * @param args */ public swingDB() { super("TestDB"); setDefaultCloseOperation(EXIT_ON_CLOSE); String drv = "com.mysql.jdbc.Driver"; // Адрес драйвера String url = "jdbc:mysql://localhost/telbook"; // База данных String login = "root"; // Логин String pwd = ""; // Парольчик ResultSet result; try { Class.forName(drv); // Загрузка драйвера con = DriverManager.getConnection(url, login, pwd); Statement stmt = con.createStatement(); //Подготавливаем запрос result = stmt.executeQuery("show columns from directory"); //Обрабатываем его Vector<String> tHead = new Vector<String>(); while (result.next()) { tHead.add(result.getString("Field")); } System.out.println (tHead); result.close(); Vector<Vector<String>> cont = new Vector<Vector<String>>(); result = stmt.executeQuery("select * from directory"); while (result.next()) { Vector<String> ins = new Vector<String>(); for (int i = 0; i < tHead.size(); i++) { ins.add(result.getString(tHead.elementAt(i).toString())); } cont.add(ins); } result.close(); con.close(); System.out.println (cont); JTable table = new JTable (cont,tHead); Box contents = new Box(BoxLayout.Y_AXIS); contents.add(new JScrollPane(table)); // выводим окно на экран setContentPane(contents); pack(); setVisible(true); } catch (ClassNotFoundException ex) { System.err.println("Cannot find the database driver classes."); System.err.println(ex); new MsgBox("database error"); } catch (SQLException ex) { System.err.println("Cannot connect to this database."); new MsgBox("connect error"); }; } public static void main(String[] args) { // TODO Auto-generated method stub new swingDB(); }
} В Swing формирование полей таблицы можно реализовать несколькими путями. В этом примере используются вектора (Vector) При недоступности базы выводится окошко с сообщением об ошибке (типа Message Box что-то, хотя в Swing нет такого понятия, такой бокс надо делать самому) Message Box реализован как дочерний класс от JDialog. База данных описана в этом примере Удачи.  Рисунок 1 - результат выполнения приложения. На консоль также выводится содержимое векторов, это для отладочных целей.
|