Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.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 JTable显示一个日期下的事件列表_Java_Sql_Swing_Jtable_Tablemodel - Fatal编程技术网

Java JTable显示一个日期下的事件列表

Java JTable显示一个日期下的事件列表,java,sql,swing,jtable,tablemodel,Java,Sql,Swing,Jtable,Tablemodel,我想发布一个关于我特别想做的事情的问题,但不知道如何处理,因为我是JTables新手。 这就是我的atm机: 但我想这样安排桌子: 因此,在特定日期下,所有与该日期对应的事件都会显示出来,而不是像上面那样单独显示 这里是相关的分类问题,我不知道在哪里和如何作出改变,让我实现上述目标 public class DbUtils { public static TableModel resultSetToTableModel(ResultSet rs) { try {

我想发布一个关于我特别想做的事情的问题,但不知道如何处理,因为我是
JTables
新手。 这就是我的atm机:

但我想这样安排桌子:

因此,在特定日期下,所有与该日期对应的事件都会显示出来,而不是像上面那样单独显示

这里是相关的分类问题,我不知道在哪里和如何作出改变,让我实现上述目标

public class DbUtils {
    public static TableModel resultSetToTableModel(ResultSet rs) {

        try {
            ResultSetMetaData metaData = rs.getMetaData();
            int numberOfColumns = metaData.getColumnCount();
            Vector columnNames = new Vector();

            for (int column=0; column < numberOfColumns; column++) {
                columnNames.addElement(metaData.getColumnLabel(column + 1));              
            }
            Vector rows = new Vector(); 
            while(rs.next()) {
            Vector newRow = new Vector(); 
            for (int i =1; i <= numberOfColumns; i++) {
            newRow.addElement(rs.getObject(i));
            }
            rows.addElement(newRow);
            } 
            return new DefaultTableModel(rows,columnNames);

           }  catch (Exception e) {
              e.printStackTrace();      
             return null; 
        }



    }
}



public class EventModel {

public TableModel getTableData() {
     TableModel model=null;
    try {
        String sql = "SELECT eventID as 'Event ID', date as 'Date',eventName as 'Name', time as 'Start Time' FROM Event";
        pst = conn.prepareStatement(sql); 
        rs = pst.executeQuery();
        model = (DbUtils.resultSetToTableModel(rs));
        }
    catch(SQLException e){
        e.printStackTrace();
    }
   finally {
        try {rs.close(); pst.close();}
        catch(SQLException e){}     }                                 
       return model; 
}


public Events getEvent(String tableClick) {
try {
        pst = conn.prepareStatement("SELECT * FROM Event WHERE eventID='"+tableClick+"' ");
        rs = pst.executeQuery();
        while(rs.next()){      
        e.setEventName(rs.getString(2));
        e.setEventDate(rs.getString(3));
        e.setEventTime(rs.getString(4));
        e.setEventVenue(rs.getString(5));
        e.setEventDetail(rs.getString(6));
        e.setEventOpportunity(rs.getString(7));
        e.setEventMoreDetails(rs.getString(8));
        e.setEndTime(rs.getString(9));
       }
    } 
    catch(SQLException ex){
    ex.printStackTrace();
    } finally {
            try {
                rs.close();
                pst.close();
            } catch (Exception e) {
            }
        }  
    return e;
} //end getEvent



}



public class EventController {
private KeyAdapter keyAdapter = new KeyAdapter() {
        @Override
        public void keyReleased(java.awt.event.KeyEvent e) {
            if((e.getKeyCode()==KeyEvent.VK_UP) || (e.getKeyCode()==KeyEvent.VK_DOWN)) {
             changeEvent();           
        }
    }
  };  

  public void changeEvent() {
      int rowSelected = view.tableEvent.getSelectedRow();
      tableClick = view.tableEvent.getModel().getValueAt(view.tableEvent.convertRowIndexToModel(rowSelected), 0).toString();
      events = model.getEvent(tableClick); //tell model to change its state based on user input on views 
      view.changeDisplay(events);

  }

}



public class EventView {
public void changeDisplay(Events e) {
       evTitle.setText(""+e.getEventName());
       evWhen.setText("When: "+ e.getEventDate());
       evWhere.setText("Where: "+ e.getEventVenue());
       evDescription.setText(""+ e.getEventDetail());
       evOpportunity.setText(""+ e.getEventOpportunity());
       evMoreDet.setText(""+ e.getEventMoreDetails());
       endTime.setText("End Time: "+e.getEndTime());
   }

}
公共类DbUtils{
公共静态表模型ResultSetTableModel(ResultSet rs){
试一试{
ResultSetMetaData元数据=rs.getMetaData();
int numberOfColumns=metaData.getColumnCount();
向量列名称=新向量();
for(int column=0;column对于(int i=1;i您可以简单地
设置自动创建行排序器(true)
。附录:由于
日期
实现了
Comaprable
,请确保您的
表格模型
返回日期列的type
Date.class
,如图所示。另请参阅


更详细的方法是使用树形表,如图所示的“大纲”
。顶层是日期,叶子是事件。

另请参见。非常难以理解,您能告诉我如何在getTableData()方面做到这一点吗Model类的方法?无论是代码>结果集>代码> >代码>结果集元数据>代码>都知道正确的类型,但是您的原始代码>矢量< /代码>使它变得模糊不清。