sql >> Database >  >> RDS >> Mysql

maak jcomponents met behulp van database

Zie allereerst dit wijze advies van @AndrewThompson:

Er zijn enkele nuttige onderwerpen om te begrijpen wat het hier betekent:

U ziet het gebruik van methoden zoals setLocation() , setBounds() of setSize() wordt ten zeerste afgeraden. Ik heb deze benadering echter eerder toegepast om het aanpassen van formulieren mogelijk te maken. Maar in plaats van specifieke (x,y) coördinaten en vaste (breedte, hoogte) kunt u beperkingen opslaan voor GridBagLayout . Laten we zeggen dat je een tabel als deze hebt:

Ik zou eerst beginnen met een klasse om gegevens uit de DB in te pakken:

public class Data {
    private String componentType, text;
    private int column, row, width, height, weightX, weightY;

    public Data(String componentType, int column, int row, int width, int height
                ,int weightX, int weightY, String text) {

        this.componentType = componentType;
        this.column = column;
        this.row = row;
        this.width = width;
        this.height = height;
        this.weightX = weightX;
        this.weightY = weightY;
        this.text = text;
   }

   // getters and setters here
}

Aangezien database-aanroepen een tijdrovende taak zijn, moet u overwegen een SwingWorker om de database-aanroep (tijdrovende taak) in een achtergrondthread uit te voeren en uw GUI te maken/updaten in de Gebeurtenisverzendingsdraad .

Dit gezegd hebbende heb je misschien zoiets als dit:

public class Demo {

    private JPanel content;
    private JFrame frame;

    private void createAndShowGUI() {        
        content = new JPanel(new GridBagLayout());

        SwingWorker<Void, Data> worker = new SwingWorker<Void, Data>() {
            @Override
            protected Void doInBackground() {                    
                try{
                   Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/db","root","password");
                   Statement stat = con.createStatement();
                   ResultSet rs = stat.executeQuery("select * from TableName");
                   while(rs.next()){
                      String componentType = rs.getString("component");
                      int column = rs.getInt("x");
                      int row = rs.getInt("y");
                      int width = rs.getInt("width");
                      int height = rs.getInt("height");
                      int weightx = rs.getInt("weightx");
                      int weighty = rs.getInt("weighty");
                      String text = rs.getString("text");
                      Data data = new Data(componentType, column, row, width, height
                                          ,weightx, weighty, text);
                      publish(data);
                  }
                  rs.close();
                  stat.close();
                  con.close();
              } catch(Exception e) {
                  System.out.println(e);
              }

                return null;
            }

            @Override
            protected void process(List<Data> chunks) {
                for(Data data : chunks) {

                    JComponent component = null;
                    if(data.getComponentType().equalsIgnoreCase("JTextField")) {
                        component = new JTextField(data.getText());
                    }

                    if(data.getComponentType().equalsIgnoreCase("JComboBox")) {
                        component = new JComboBox();
                    }

                    if(data.getComponentType().equalsIgnoreCase("JLabel")) {
                        component = new JLabel(data.getText());
                    }

                    if(component != null) {
                        GridBagConstraints constraints = new GridBagConstraints();
                        constraints.gridx = data.getColumn();
                        constraints.gridy = data.getRow();
                        constraints.gridwidth = data.getWidth();
                        constraints.gridheight = data.getHeight();
                        constraints.weightx = data.getWeightX();
                        constraints.weighty = data.getWeightY();

                        constraints.anchor = GridBagConstraints.WEST;
                        constraints.fill = GridBagConstraints.BOTH;
                        constraints.insets = new Insets(8,8,8,8);
                        content.add(component, constraints);
                    }

                }
            }

            @Override
            protected void done() {
                frame = new JFrame("Demo");
                frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
                frame.getContentPane().add(content);
                frame.pack();
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
            }
        };

        worker.execute();
    }


    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                new Demo().createAndShowGUI();
            }
        });
    }
}

En je ziet zoiets als dit:




  1. SQL-UPDATE met LIKE

  2. Redenen om Access-apps om te zetten in webgebaseerde apps

  3. Tabel dupliceren in MYSQL zonder één rij tegelijk te kopiëren

  4. Gebruik Access of MySQL als een backend-database