java - JTable 中的问题组合框

标签 java swing jtable jcombobox

我有一个关于为学校编程时出现的问题的问题。

我们想做一个总结,从周一到周日,一家小公司的老板可以在哪里看到他的员工,并可以在哪里为这些人分配工作时间。我们为此使用了 JTable。在每个单元格中,我们希望实现一个包含时段(上午、下午、晚上)的组合框。

因此,当单击单元格时,我们希望能够单击显示的组合框,选择一个时段,然后我们希望能够输入名称、指定的日期和白天,在数据库中。 (现在,将它们放入变量或任何东西中就可以了,我们自己将其放入数据库中。)

这是迄今为止我们的 GUI 的屏幕截图: Link to our GUI

到目前为止,一切都很好。我们并没有在 GUI 的外观上真正投入任何精力,所以请耐心等待,我们将重点关注功能 =)。我们唯一的问题是,我们需要程序知道哪个日期和哪个人链接到正在更改的单元格,以便我们可以将姓名、日期和新的时段放入数据库中。

我们尝试过:当您单击列表中的单元格时,我们使用了 clicklisteren。我们在该方法中添加了一些代码,它能够看到坐标,从而获得名称和日期。那行得通。然后我们尝试实现组合框。我们在那里也取得了成功。但是,当 cel 变成组合框时,将不再使用 click 方法。

所以我们的问题是:这是获得我们想要的东西的正确方法吗?如果是这样,我们如何修复列表,以便在更改组合框时能够找出名称和日期,以便我们可以将其放入数据库中?如果不是,我们应该改变什么?我们应该使用什么样的其他监听器或其他代码来实现我们的目标?

这是我们的一些代码:

    private javax.swing.table.DefaultTableModel model; //table model instantieren --teminste, straks.
    model = new javax.swing.table.DefaultTableModel(); //Hier wordt de tabel gedefinieerd.


    //We make the columns here:
    model.addColumn("Naam werknemer:");                                    
    model.addColumn("Maandag");
    model.addColumn("Dinsdag");
    model.addColumn("Woensdag");
    model.addColumn("Donderdag");
    model.addColumn("Vrijdag");
    model.addColumn("Zaterdag");
    model.addColumn("Zondag");

    //We make the combobox here:
    myCombo = new JComboBox(); 
    myCombo.addItem("-"); //not planned
    myCombo.addItem("ochtend"); //add items
    myCombo.addItem("middag");
    myCombo.addItem("avond");

   //This puts our combox in every cell of the first column
    TableColumn tableColumn = jTable1.getColumnModel().getColumn(1);


    //mouseclick listener
    jTable1.addMouseListener(new java.awt.event.MouseAdapter() {
        public void mouseClicked(java.awt.event.MouseEvent evt) {
            jTable1MouseClicked(evt);
        }
     });
    //actionlisteneren bij action performed
    myCombo.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            jComboBox1ActionPerformed(evt);
        }
    });


private void jTable1MouseClicked(java.awt.event.MouseEvent evt) {

            Point pnt = evt.getPoint();
            int row = jTable1.rowAtPoint(pnt);                  //This is the X 
            int col = jTable1.columnAtPoint(pnt);               //this is the Y -> Date
            String columnpje = ""+col;
            naambijcel = ""+jTable1.getValueAt(row,0);          //This variable will hold a name


            if (columnpje.equals("1")){
                datumbijcel = planningbeheermanager.getColumnArray().get(0); 
            }else if (columnpje.equals("2")){  
                datumbijcel = planningbeheermanager.getColumnArray().get(1);
            }else if (columnpje.equals("3")){       
                datumbijcel = planningbeheermanager.getColumnArray().get(2);    
            }else if (columnpje.equals("4")){
                datumbijcel = planningbeheermanager.getColumnArray().get(3);
            }else if (columnpje.equals("5")){
                datumbijcel = planningbeheermanager.getColumnArray().get(4);
            }else if (columnpje.equals("6")){
                datumbijcel = planningbeheermanager.getColumnArray().get(5);
            }else if (columnpje.equals("7")){
                datumbijcel = planningbeheermanager.getColumnArray().get(6);
            }

            //System.out.println(obj1);
            //System.out.println(row +" "+ col);
}

    private void jComboBox1ActionPerformed(java.awt.event.ActionEvent evt) {                                           
    // selectbox ding ("" zorgen ervoor dat het object in een string kan worden gezet.
    System.out.println("Dagdeel: "+myCombo.getSelectedItem());
    System.out.println("Naam: "+naambijcel);
    System.out.println("Datum: "+datumbijcel);
    }  

如果您想查看更多我们的代码或者有任何其他问题,请随时提问!

最佳答案

我不能完全确定,但对我来说,您似乎没有正确使用 TableModel。您在 jComboBox1ActionPerformed 中执行的操作实际上应该在 setValueAt() 中执行。 .

也许,扩展 AbstractTableModel比 DefaultTableModel 更适合,但同样,如果没有完整的代码,则无法确定。

关于java - JTable 中的问题组合框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10620549/

相关文章:

java - 卡在一个带有随机数据轴的简单快速排序实现中

java - 如何从元素映射生成 XML 文件?

java - 添加的 BufferedImage 只有 2x2 像素

Java jTable 来自 ArrayList 对象的数据并通过其他方法更新

java - WebSphere javax.naming.NamingException 和连接被拒绝

java - Tomcat 更新后 WebsocketServerContainer 不在 ServletContext 中

java - 动画 Swingworker 线程和计时器

java - JPanel 的绘制方法没有被调用,为什么?

java - 从另一个类引用 JTable

java - Jtable保留列宽