当JButton在JLabel中递增值并放入数据库时​​获取值

时间:2014-09-21 13:53:08

标签: java database swing jbutton jlabel

我这里有这个代码,这是一个带按钮的标签,当点击按钮时,标签会增加一个:

    int helpfulNumber = content.getHelpful();

    JButton helpfulBT = new JButton("Helpful");
    reviewBoxPanel.add(helpfulBT);

    JLabel helpfulLB = new JLabel("Helpful: " + helpfulNumber);
    reviewBoxPanel.add(helpfulLB);

    helpfulBT.addActionListener(new ActionListener(){
        public void actionPerformed(ActionEvent event)
        {
            int helpfulNumber = content.getHelpful();
            int newHelp = helpfulNumber + 1;
            helpfulLB.setText("Helpful:" + newHelp);

        }
    });

    helpfulLB.setText("Helpful: " + newHelp); // this doesn't work

在下面的代码中,单击提交时,我需要获取标签的值,但新值为helpfulNumber。就像现在一样,它似乎只能获得标签的旧值

    final JButton submitBT = new JButton("Submit");
    southPanel.add(submitBT);

    submitBT.addActionListener(new ActionListener()
    {
        public void actionPerformed(ActionEvent event)
        {
            if(event.getSource() == submitBT)
            {   
                MovieReview some = new MovieReview();
                some.setUser(userTF.getText());
                some.setMovie(titleTF.getText());
                some.setFeatured(featuredCB.isSelected());
                some.setRating(Integer.parseInt(ratingTF.getText()));
                some.setHelpful(helpfulNumber);
                some.setUnhelpful(notHelpfulNumber);
                some.setComments(reviewTA.getText());
                some.setId(content.getId());

                if(owner.updateReview(isUpdate, some))
                {
                    // success
                    try {
                        MovieReviewDSC.edit(some);
                        //tableModel.fireTableRowsInserted(firstRow, lastRow);
                    } catch (Exception e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                    JOptionPane.showMessageDialog(ReviewEditor.this, "Database succesfully updated!");

                }
                else
                {
                    // fail

                }

            }

        }
    });

所以我的想法是,当这个框架打开时,content中已存在可能不是0的值。目前,如果我单击按钮增加并单击“提交”,则该数字保持为原始状态值。

我已尝试在helpfulLB.setText("Helpful: " + newHelp); actionListener之外再次使用helpfulBT,但无法识别newHelp变量。任何帮助将不胜感激,谢谢你的时间。

解决方案感谢@ tiago7和@Boosha

    helpfulNumber = content.getHelpful();

    JButton helpfulBT = new JButton("Helpful");
    reviewBoxPanel.add(helpfulBT);

    JLabel helpfulLB = new JLabel("Helpful: " + helpfulNumber);
    reviewBoxPanel.add(helpfulLB);

    helpfulBT.addActionListener(new ActionListener(){
        public void actionPerformed(ActionEvent event)
        {

            helpfulNumber += 1;
            helpfulLB.setText("Helpful:" + helpfulNumber);

        }
    });

同时在框架中声明int helpfulNumber。谢谢大家,我很感激帮助

2 个答案:

答案 0 :(得分:1)

在侦听器外部声明newHelp,并通过删除int声明在侦听器中使用它。

答案 1 :(得分:1)

似乎你试图提交类似于' Like'社交网络中的行动。

只需在框架中声明变量即可保留您的“有用”字样。值。

初始化,当您加载数据时,在按钮ActionListener中递增它并在提交操作中读取它。

您只需要为此变量提供全局范围,因此可以从所有侦听器访问它。