ここにJavaとnetbeansのnoob。私はJtableをJavadbにバインドしています。 JPAControllerを使用してデータベースと対話できます。 JComboBoxとgetSelectedItem()メソッドを使用してオブジェクトに簡単にアクセスし、それを編集または破棄するためにデータベースオブジェクトにキャストできます。例:バインドされたJtableまたはJlistはJPAControllerで使用するデータベースオブジェクトをどのように返しますか?
private void deleteInfoButtonActionPerformed(java.awt.event.ActionEvent evt) {
Customers deleteInfo = (Customers) DeleteInfoComboBox.getSelectedItem();
if (deleteInfo != null) {
EntityManagerFactory emf = Persistence.createEntityManagerFactory("CustomersPU");
CustomersJpaController cjc = new CustomersJpaController(emf);
try {
cjc.destroy(deleteInfo.getId());
} catch (NonexistentEntityException ex) {
Logger.getLogger(DeleteInformant.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
JtableまたはJlistを使用してオブジェクトを返すのと同じ方法がありますか? getSelectedRow()メソッドを使用しようとしましたが、これはデータベース内のIDと異なるJtableの行に関連する整数だけを返します。オブジェクトを返す唯一の他のメソッドはgetValueAt()ですが、指定されたセルのオブジェクトを返します。 JListの場合、getSelectedValuesList()は文字列のベクトルを返します。 getSelectedValues()は私が望んだことをしているようですが、償却されます。他の投稿(Here)からは、カスタムテーブルモデルを作成する必要があるかもしれませんが、その例ではnetbeansを使用して自動生成JPAControllerを考慮していないようです。
ご協力いただきありがとうございます。
アップデート:ここでは自動要求通りの値とするJListを移入するコードを生成します:
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
bindingGroup = new org.jdesktop.beansbinding.BindingGroup();
CustomersPUEntityManager = java.beans.Beans.isDesignTime() ? null : javax.persistence.Persistence.createEntityManagerFactory("CustomersPU").createEntityManager();
customerssQuery = java.beans.Beans.isDesignTime() ? null : CustomersPUEntityManager.createQuery("SELECT i FROM Customers i");
customersList = java.beans.Beans.isDesignTime() ? java.util.Collections.emptyList() : customersQuery.getResultList();
jScrollPane1 = new javax.swing.JScrollPane();
jList1 = new javax.swing.JList<>();
jButton1 = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
org.jdesktop.swingbinding.JListBinding jListBinding = org.jdesktop.swingbinding.SwingBindings.createJListBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, customersList, jList1);
bindingGroup.addBinding(jListBinding);
jScrollPane1.setViewportView(jList1);
jButton1.setText("jButton1");
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(34, 34, 34)
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 144, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(54, 54, 54)
.addComponent(jButton1)
.addContainerGap(89, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(65, 65, 65)
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(layout.createSequentialGroup()
.addGap(130, 130, 130)
.addComponent(jButton1)))
.addContainerGap(105, Short.MAX_VALUE))
);
bindingGroup.bind();
pack();
}// </editor-fold>
「JList」に値を設定するコードを投稿してください。 – kgeorgiy
ありがとう!私は密接に関連した自動生成コードを見ていませんでした。 Customersオブジェクトにアクセスするために使用できるcustomersList変数が表示されます。もっとエレガントな方法があるかもしれませんが、うまくいくソリューションが見つかりました。下記参照。 – spudrucket