如果java Gui中的单行中存在多列,如何在jList中获取id。?
我正在如果java Gui中的单行中存在多列,如何在jList中获取id。?,java,database,swing,Java,Database,Swing,我正在JList中从数据库中提取数据,这里我使用 { ... ... DefaultListModel m=new DefaultListModel(); String sqllist="select * from cnotezdetails cn where cn.case_count_no="+c+""; System.out.println(sqllist); pst=conn.prepareStatement(sqllist);
JList
中从数据库中提取数据,这里我使用
{
...
...
DefaultListModel m=new DefaultListModel();
String sqllist="select * from cnotezdetails cn where cn.case_count_no="+c+"";
System.out.println(sqllist);
pst=conn.prepareStatement(sqllist);
rs= pst.executeQuery();
while(rs.next()){
int id=rs.getInt(1);
String date=rs.getString("nextDate");
String status=rs.getString("status");
String notes=rs.getString("notes");
System.out.println(date);
m.addElement(id+date+notes);
}
jList1.setModel(m);
}
tmp=(integer)JList1.getSelectedValue();
这里我只需要选择id值,但它getSelected
id、日期、注释。但我只需要选择id值来在数据库中进行比较
i、 e
这里我只需要获取id值,即id=1,2,等等
我怎样才能做到这一点呢?按照@MadProgrammer的建议去做就行了。使用简单的POJO包装这些值。您可以重写
toString()
,以获得所需的输出。选择该项时,只需从pojo获取值
比如:
import java.text.MessageFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.swing.DefaultListModel;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JScrollPane;
import javax.swing.ListModel;
import javax.swing.SwingUtilities;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
public class PojoListDemo {
public PojoListDemo() {
JFrame frame = new JFrame();
frame.add(new JScrollPane(getPojoList()));
frame.pack();
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.setLocationByPlatform(true);
frame.setVisible(true);
}
private JList getPojoList() {
JList list = new JList(getListModel());
list.addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {
if (e.getValueIsAdjusting()) {
Pojo pojo = (Pojo) ((JList) e.getSource())
.getSelectedValue();
System.out.println("Selected id: " + pojo.getId());
}
}
});
return list;
}
private ListModel getListModel() {
DefaultListModel<Pojo> model = new DefaultListModel<Pojo>();
model.addElement(new Pojo(1, new Date(), "Hello World"));
model.addElement(new Pojo(2, new Date(), "Hello Stack Overflow"));
model.addElement(new Pojo(3, new Date(), "Hello Grandma"));
return model;
}
class Pojo {
private int id;
private Date date;
private String description;
public Pojo(int id, Date date, String description) {
this.id = id;
this.date = date;
this.description = description;
}
public int getId() {
return id;
}
public Date getDate() {
return date;
}
public String getDescription() {
return description;
}
@Override
public String toString() {
return MessageFormat.format("{0} - {1} - {2}",
getId(),
new SimpleDateFormat("dd MMM yyyy").format(getDate()),
getDescription());
}
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new PojoListDemo();
}
});
}
}
导入java.text.MessageFormat;
导入java.text.simpleDataFormat;
导入java.util.Date;
导入javax.swing.DefaultListModel;
导入javax.swing.JFrame;
导入javax.swing.JList;
导入javax.swing.JScrollPane;
导入javax.swing.ListModel;
导入javax.swing.SwingUtilities;
导入javax.swing.event.ListSelectionEvent;
导入javax.swing.event.ListSelectionListener;
公共类PojoListDemo{
公共PojoListDemo(){
JFrame=新JFrame();
add(新的JScrollPane(getPojoList());
frame.pack();
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.setLocationByPlatform(真);
frame.setVisible(true);
}
私人JList getPojoList(){
JList list=newjlist(getListModel());
addListSelectionListener(新的ListSelectionListener(){
@凌驾
public void值已更改(ListSelectionEvent e){
如果(如getValueIsAdjusting()){
Pojo Pojo=(Pojo)((JList)e.getSource())
.getSelectedValue();
System.out.println(“所选id:+pojo.getId());
}
}
});
退货清单;
}
私有ListModel getListModel(){
DefaultListModel=新的DefaultListModel();
model.addElement(新Pojo(1,新日期(),“Hello World”);
addElement(新Pojo(2,新日期(),“Hello堆栈溢出”);
model.addElement(新的Pojo(3,新的Date(),“你好,奶奶”);
收益模型;
}
Pojo类{
私有int-id;
私人日期;
私有字符串描述;
公共Pojo(整数id、日期、字符串描述){
this.id=id;
this.date=日期;
this.description=描述;
}
公共int getId(){
返回id;
}
公共日期getDate(){
返回日期;
}
公共字符串getDescription(){
返回说明;
}
@凌驾
公共字符串toString(){
返回MessageFormat.format(“{0}-{1}-{2}”,
getId(),
新的SimpleDataFormat(“dd-MMM-yyyy”).format(getDate()),
getDescription());
}
}
公共静态void main(字符串[]args){
SwingUtilities.invokeLater(新的Runnable(){
公开募捐{
新的PojoListDemo();
}
});
}
}
更新 如果您知道如何使用jdbc,那么从db数据创建列表很简单。只需将每个结果行属性添加到pojo中相应的属性。差不多
private ListModel getListModel() {
DefaultListModel<Pojo> model = new DefaultListModel<Pojo>();
...
// access your database and get a ResultSet
...
while(rs.next()) {
int id = rs.getInt("id");
Date date = rs.getDate("date");
String description = rs.getString("description");
model.addElement(new Pojo(id, date, description));
}
// close resources
return model;
}
private ListModel getListModel(){
DefaultListModel=新的DefaultListModel();
...
//访问数据库并获取结果集
...
while(rs.next()){
int id=rs.getInt(“id”);
日期=rs.getDate(“日期”);
字符串描述=rs.getString(“描述”);
型号.增补件(新Pojo(id、日期、说明));
}
//密切资源
收益模型;
}
将每一行包装在一个POJO(普通的旧Java对象)中,将其添加到您的JList
列表模型中。使用ListCellRenderer
自定义列表数据的呈现方式。有关更多详细信息,请参阅。通过这种方式,您可以以任何想要的方式“显示”数据,但仍然可以根据需要访问其他方面更好,更易于使用JTable(来自发布的结构)而不是JList,就像从ListCellRenderer中绘制的阴影类中查找索引一样(很简单,无需特别努力即可实现,但需要的不仅仅是关于Jave和Swing的基本知识)具有删除列的JTable(JTable.removeColumn()仅从视图中删除列其模型中存在/仍然存在值)如果没有JTableHeader,看起来就像JList@mKorbel同意reJTable
。为了显示表格数据,显然,JTable
是要使用的逻辑组件。我需要在jList中使用,并且我必须获取整行中的第一个列id。+1表示POJO和重写的toString
。trivi不需要自定义呈现程序所有任务都是这样的。先生,我需要从数据库中获取数据,我还创建了swing Gui,即Jdialog Gui,因为我添加了列表Jlist,在这个Jlist中,我必须从数据库中获取数据。当您获取数据时,从每一行创建一个pojo。您测试过这段代码吗?就显示和获取而言,这是您正在寻找的基本功能吗正在从所选项目中删除id?是的,我已经测试了此代码,它工作正常,但我需要从数据库中获取数据。
private ListModel getListModel() {
DefaultListModel<Pojo> model = new DefaultListModel<Pojo>();
...
// access your database and get a ResultSet
...
while(rs.next()) {
int id = rs.getInt("id");
Date date = rs.getDate("date");
String description = rs.getString("description");
model.addElement(new Pojo(id, date, description));
}
// close resources
return model;
}