java - 如何将数据库中的列值获取到 jLabels

标签 java swing

在我的数据库表中,有一列包含不同的数据。我想要的是检索该列中的所有数据并将它们放在 JLabel 上。即在我的数据库中。

name
Aaron
Baldwin
Gabriel
Harold

现在我有 1 个空 jLabel,但是如何从数据库中检索值并在插入新数据时将每个值放入标签中?插入新数据时,需要创建包含该数据的新 jLabel。

我尝试过的。

private void getNames() {

    String sql = "SELECT * FROM details";
    try
    {
        con = Db.getConnection();
        pst = con.prepareStatement(sql);
        rs = pst.executeQuery();

        while(rs.next())
        {
           jLabel1.setText(rs.getString("name"));
        }
    }
}

最佳答案

如果您使用表格,下面的代码将:

public class Test extends JPanel{

    private static final long serialVersionUID = 1L;

    List<Object> objects = new ArrayList<Object>();

    JTable billTable = new JTable();
    JTableBinding<UiBillItem, UiBill, JTable> jTableBinding;

    private void init(){
        objects = getNames();
    }

    private List<Object> getNames() {
        // for better to bind, it should return list of details object
        List<Object> list = new ArrayList<Object>();
        return list;
    }

    private void initDataBindings(){

        // for table binding
        BeanProperty<Test, List<Object>> uiBillBeanProperty = BeanProperty.create("objects");
        jTableBinding = SwingBindings.createJTableBinding(UpdateStrategy.READ_WRITE, this, uiBillBeanProperty, billTable);

        BeanProperty<Test, Float> uiBillItemBeanProperty_3 = BeanProperty.create("quantity"); // property need to show 
        jTableBinding.addColumnBinding(uiBillItemBeanProperty_3).setColumnName("Qty");
        // can create multiple property like this 

    }
}

优点:

  1. 自动计算列表大小。无需更新,但是当您使用普通 jlabel 时,您必须创建要显示的 jlabel 数量 但不知道尺寸。
  2. 您可以在类内部绑定(bind)属性(变量)。

请注意,您还可以根据您可以使用您想要的条件来使用 GlazedLists 绑定(bind)。

下面是 Jlabel 绑定(bind)的代码,

  public class Test extends JPanel{

    private JLabel lblName;
    Details details;

    public Test(){
        lblName = new JLabel();
        add(lblName);

        init();
        initBinding();
    }
    private void init() {

        String sql = "SELECT * FROM details limit 1";
        try
        {
        con = Db.getConnection();
        pst = con.prepareStatement(sql);
        rs = pst.executeQuery();

        details = (Details) rs;
        }catch(Exception e){
            e.printStackTrace();
        }
    }


    private void initBinding(){
        BeanProperty<Details, Srting> beanProperty = BeanProperty.create("name");
        BeanProperty<JLabel, String> jTextFieldBeanProperty = BeanProperty.create("text");
        AutoBinding<Details, String, JLabel, String> autoBinding_20 = Bindings.createAutoBinding(UpdateStrategy.READ_WRITE, details, beanProperty, lblName, jTextFieldBeanProperty);
        autoBinding_20.bind();

        // can bind variables 
    }

}

class Details(){

    private Stirng name;

    private final PropertyChangeSupport propertyChangeSupport = new PropertyChangeSupport(
            this);

    public void addPropertyChangeListener(PropertyChangeListener listener) {
        propertyChangeSupport.addPropertyChangeListener(listener);
    }

    public void addPropertyChangeListener(String propertyName,
            PropertyChangeListener listener) {
        propertyChangeSupport.addPropertyChangeListener(propertyName, listener);
    }

    public void removePropertyChangeListener(PropertyChangeListener listener) {
        propertyChangeSupport.removePropertyChangeListener(listener);
    }

    public void removePropertyChangeListener(String propertyName,
            PropertyChangeListener listener) {
        propertyChangeSupport.removePropertyChangeListener(propertyName,
                listener);

    }

    protected void firePropertyChange(String propertyName, Object oldValue,
            Object newValue) {
        propertyChangeSupport.firePropertyChange(propertyName, oldValue,
                newValue);

    }
}

关于java - 如何将数据库中的列值获取到 jLabels,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48899424/

相关文章:

java - 在 netbeans 中清理和构建后从 dist 文件夹运行 jar 文件时不读取 xml 文件

java - 可视化循环内 JPanel 的变化

java - 如何让 FlowLayout 像其他组件一样在底部对齐 JPanel?

java - 在具有自定义行背景颜色的 JTable 中使用 intercellSpacing 会导致意外结果

java - 如何: get input from JTextField after button is pressed

java - 是不是所有的图形对象都要继承自JPanel?

java - 发布maven项目到本地目录

java - 在执行器框架中同步资源

java - 打印连续数字

java - Selenium (Java) - Chrome Headless - 无法上传文件