这里有Java和netbeans。我有一个绑定到JavaDB的Jtable。我可以使用JPacontroller与数据库交互。我可以使用JComboBox和getSelectedItem()方法轻松地访问对象,并将其强制转换为数据库对象,以便编辑或销毁。例如:
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()方法,但它只返回一个与Jtable中的行相关的整数,这与数据库中的ID不同。我看到的唯一一个返回对象的方法是getValueAt(),但它返回指定单元格的对象。对于Jlist,getSelectedValuesList()只返回一个字符串向量。getSelectedValues()似乎做了我想做的事情,但被贬低了。从其他文章(这里)来看,我似乎需要创建一个自定义的tablemodel,但这个示例似乎没有考虑到使用NetBeans自动生成JPAController。
提前感谢您的帮助!
UPDATE:下面是自动生成的代码,它根据请求使用值填充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>
NetBeans自动生成一个名为customersList的变量,该变量包含填充Jtable或JList的Customers对象列表。这个变量可以通过使用带有所选项索引的get()方法来访问所选对象。
对于JTable:
Customers selectedCustomer = customersList.get(jTable1.getSelectedRow());
对于具有多个选择的Jlist,可以生成Customers对象数组,这些对象可以通过JPacontroller进行迭代和操作:
Customers[] selectedCustomers = new Customers [jList1.getSelectedIndices().length];
for (int i = 0; i < jList1.getSelectedIndices().length; i++) {
selectedCustomers[i] = customersList.get(jList1.getSelectedIndices()[i]);
}
这只在Jlist或Jtable的顺序没有改变时才起作用。如果您希望能够对您的项目进行排序,那么您可以遍历列表以找到正确的对象。这就是我如何利用表的ID列在Jtable中实现的:
public static int idColumn = 0;
for (Customers i : customersList) {
if (i.getId() == jTable1.getValueAt(jTable1.getSelectedRow(), idColumn)) {
Customers selectedCustomer = i;
}
}
我想知道是否可以使用我的数据库中的数据将JTable中的一些行灰化或呈现为不可见? 以下是我的JTable中的列: 显示“我的表格”时,我希望行带有d1。getDutyStatus(),其中dutyStatus=“Inactive”将灰显。我的表格当前可以更新为“活动”(按更新按钮)或“非活动”(按删除按钮)。我不希望用户能够编辑dutyStatus为“Inactive”的任何职责。非常感谢您的任
问题内容: 在Oracle 10g中,我有以下SQL: 返回: 我想扩展此查询以确定此结果集中的dog.id的oracle rownum。 我试过了 但这并不能很好地解决(无论我匹配哪个dog.id,它都返回1)。我原本希望回来3。 谢谢你的帮助! 笔记 http://www.oracle.com/technology/oramag/oracle/06-sep/o56asktom.html 我很确
问题内容: 我有一个JList和ArrayList。如何将arraylist中的数据绑定到jlist.Ares有替代方法吗? 如何绑定以上代码。现在代码给出错误。 问题答案: 您无需克隆ArrayList。只需调用toArray()
问题内容: 我想在创建PHP PDO对象之后选择要使用的MySQL数据库。我该怎么做呢? 有等于mysqli :: select_db的PDO吗? 也许我试图不当使用PDO?请帮助或解释。 编辑 我不应该使用PDO创建新数据库吗?我知道使用PDO的大部分好处会因为很少使用的操作而丢失,该操作不会插入数据,例如,但是不得不使用其他连接创建数据库,然后创建PDO连接进行其他调用似乎很奇怪。 问题答案:
问题内容: 我想用MySQL和JPA设置Spring Boot。为此,我创建: Person PersonRepository PersonController 开始课程示例: 对于数据库配置,我创建了application.properties 所以我有项目结构: 但是结果是我有例外: 问题答案: 我像你一样创建了一个项目。结构看起来像这样 这些类只是复制自你的类。 我将application.
问题内容: 网页应显示来自PostgreSql数据库中特定产品类别的一个产品图像。该图像应每25秒自动更改为其他图像。退货产品可能是随机的,也可能是某种顺序的。某些产品可能会丢失,而某些产品可能会重复,但是应该退回标准中的大多数产品。样品检索之间的可用图像总数可能会略有变化 当前使用下面的代码,该代码每25秒执行一次。这需要对数据库进行两个查询:一个查询可能是slwo的计数,第二个查询单个图像的检