当前位置: 首页 > 知识库问答 >
问题:

在jTable a中选择记录时在jTable B中显示值

包子航
2023-03-14

我试图传入一个JTable对象,它有DiscountID和Name列。我基本上是在尝试获取JTable a(折扣ID)中选择的第一列的一行,以及在rs.next()循环中与JTable B中选择的记录相关的这组数据。

我现在的问题是,因为最初int row=table。getSelectedRow()我必须将其设置为0,以避免出现IndexOutOfBoundsException但当我运行程序时,JTable B将显示与JTable A中的第一条记录相关的信息,而不需要我选择任何数据。我不想在JTTable B中显示任何信息,直到我从JTTable a中选择了一条记录,同时也避免了IndexOutOfBoundsException。如果有人能帮我解决这个问题,我将不胜感激。我一直在努力寻找解决方案。

下面是我的方法的代码:

public static ArrayList<FlexiBand> getFlexiBands(JTable table, JTable table2) {
    ArrayList<FlexiBand> flexiband = new ArrayList<FlexiBand>();
    try {

        Connection con = null;
        PreparedStatement stmt = null;
        ResultSet rs = null;

        con = DriverManager
                .getConnection("jdbc:mysql://localhost:3306/abpp034?user=abpp034&password=120001772");

        stmt = con
                .prepareStatement("SELECT UpperBound, PercentageRate FROM FlexiBand WHERE DiscountID = ?");

        int row = table.getSelectedRow();

        if (row == -1) {
            row = 0;
            for (int x = 0; x < table2.getRowCount(); x++) {

                table2.setValueAt("", x, 0);
                table2.setValueAt("", x, 1);

            }

        }
        System.out.println(row); // This is printing me 0 meaning that row is still 0

        System.out.println(table.getValueAt(row, 0)); // This means that row will be equal to 0
                                                      // when it goes to the next line.
        stmt.setObject(1, table.getValueAt(row, 0));

        try {

            rs = stmt.executeQuery();

            int i = 0;
            while (rs.next()) {
                FlexiBand fb = new FlexiBand();

                fb.setUpperBound(rs.getInt("UpperBound"));
                fb.setPercentageRate(rs.getInt("PercentageRate"));

                flexiband.add(fb);

            }

        } finally {

            if (rs != null) {
                try {
                    rs.close();
                } catch (SQLException se) {
                    System.out.println(se.getErrorCode());
                }
            }
            if (stmt != null) {
                try {
                    stmt.close();
                } catch (SQLException se) {
                    System.out.println(se.getErrorCode());
                }
            }
            if (con != null) {
                try {
                    con.close();
                } catch (SQLException se) {
                    System.out.println(se.getErrorCode());
                }
            }
        }

    } catch (SQLException ex) {
        Logger.getLogger(Model.class.getName()).log(Level.SEVERE, null, ex);
    }
    return flexiband;

}

下面是我调用该方法的地方:

public static void main(String[] args) {

    DiscountGUIView dgv = new DiscountGUIView();

    setDiscountNames("Fixed", dgv.getjComboBox2());
    getFlexiBands(dgv.getjTable2(), dgv.getjTable5());

}

在与方法相同的类中。

共有1个答案

薄涵衍
2023-03-14

就这样做吧。检查是否选中了行。

public static void main(String[] args) {

    DiscountGUIView dgv = new DiscountGUIView();

    setDiscountNames("Fixed", dgv.getjComboBox2());
    ArrayList<FlexiBand> flexiband = null;
    if (dgv.getjTable2().getSelectedRow != -1) {
        flexiband = getFlexiBands(dgv.getjTable2(), dgv.getjTable5());
    }

    if (flexiband !=null) {
        // user selected a row, do what ever you want to do
    } else {
        // nothing is selected
        // skip other operations
    }

}
 类似资料:
  • 在我工作的项目中,有一个包含以下字段的数据库表: 从数据库表中,我想显示在病房中可用的床,但当病房被选中时没有被占用,那么在床选择标签中应该只显示可用的床。 jsp表单select标记代码为: 所以问题是我如何才能做到这一点? 我是新Java发展,这是我的第一个项目,所以请原谅,如果任何愚蠢的错误发现。 谢谢你的帮助,非常感谢。

  • 问题内容: 这个问题很简单,由于某种原因我无法获得正确的结果以仅显示重复记录 样本输出 预期产量 我如何做到这一点? 问题答案: sqlfiddle

  • 所以当我在选项1中输入我的输入后,我选择继续。我的输入信息在选择选项2时消失了。我刚开始我的编程课程,所以请给我很多建议。这是这里的输出输入图像描述

  • 问题内容: 我在MySql 5中有一个电话号码表。简单的结构是 记录如下 我需要对这些数据进行排序,并将连续的数字块分组为数字范围。我愿意在C#LINQ中实现该解决方案,但服务器端MySql是一等奖。MySql中是否有一种方法可以汇总此数据,以便输出如下所示? 问题答案: 有一个简单的技巧可以将连续的条目折叠成一个组。如果按(row_number-entry)进行分组,则连续的条目将在同一组中结束

  • 问题内容: 我有以下表格/列: 有一对多的关系 有一对多的关系 对于每个,我都需要获取最新的价值。如何使用SQL执行此操作。我已经尝试使用,但我似乎无法弄清楚如何参与和成功。 理想结果集将包含与最新记录的所有列结合的所有。 注意:使用 MS SQL 2005+ 问题答案: 看看使用ROW_NUMBER 就像是

  • 我在做一项任务。在其中 > 有一个select标记,其中显示了表1中的usersname。我可以选择多个选项。 工作: 共有两张表:表1 但是当页面再次显示时,以前选择的所有选项现在都应该显示。 但是我担心应该运行多个查询。就像现在,我是这样做的。 我运行以下查询以在select选项中显示表1中的数据 在php的循环中,我再次通过一个查询检查表1中这个id的选项是否存在于表2中,然后为该选项显示选