Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果java Gui中的单行中存在多列,如何在jList中获取id。?_Java_Database_Swing - Fatal编程技术网

如果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同意re
JTable
。为了显示表格数据,显然,
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;
}