Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>Based on this <a href="https://stackoverflow.com/a/15715096/230513">example</a>, the <a href="http://sscce.org/" rel="nofollow noreferrer">sscce</a> below simply creates a new panel for each click on the <kbd>Add</kbd> button and fills in the result. In a real program, you may want to use a <a href="http://docs.oracle.com/javase/tutorial/uiswing/concurrency/worker.html" rel="nofollow noreferrer"><code>SwingWorker</code></a> to manage latency and resources.</p> <p><img src="https://i.stack.imgur.com/jVrk8.png" alt="image"></p> <pre><code>import java.awt.BorderLayout; import java.awt.EventQueue; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import javax.swing.AbstractAction; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTabbedPane; import org.h2.jdbcx.JdbcDataSource; /** * @see https://stackoverflow.com/a/19860170/230513 * @see https://stackoverflow.com/a/15715096/230513 * @see https://stackoverflow.com/a/11949899/230513 */ public class TabData { private int n = 1; private void display() { JFrame f = new JFrame("TabData"); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); final JTabbedPane jtp = new JTabbedPane(); jtp.add(String.valueOf(n), createPane()); f.add(jtp, BorderLayout.CENTER); JPanel p = new JPanel(new FlowLayout(FlowLayout.RIGHT)); p.add(new JButton(new AbstractAction("Add") { @Override public void actionPerformed(ActionEvent e) { jtp.add(String.valueOf(++n), createPane()); jtp.setSelectedIndex(n - 1); } })); f.add(p, BorderLayout.SOUTH); f.pack(); f.setLocationRelativeTo(null); f.setVisible(true); } private JPanel createPane() { JPanel p = new JPanel(); JLabel l = new JLabel(); p.add(new JLabel("Result: ")); p.add(l); JdbcDataSource ds = new JdbcDataSource(); ds.setURL("jdbc:h2:file:~/src/java/jdbc/test;IFEXISTS=TRUE"); ds.setUser("sa"); ds.setPassword(""); try { Connection conn = ds.getConnection(); Statement s = conn.createStatement(); ResultSet rs = s.executeQuery("SELECT RAND() FROM DUAL"); rs.next(); l.setText(rs.getString(1)); } catch (SQLException ex) { ex.printStackTrace(System.err); } return p; } public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { @Override public void run() { new TabData().display(); } }); } } </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload