使用Jbutton更新JLabel整数值

时间:2015-08-13 12:33:42

标签: java jbutton jlabel

我有JLabelJButton命名增量。我想在每次点击JLabel值时增加JButton值。

使用此代码时,JLabel值仅更改为1,然后在JButton上额外点击没有任何反应。任何形式的帮助将不胜感激。

private void initialize() {
    int value1 = 0;
    frame = new JFrame();
    frame.setBounds(100, 100, 790, 400);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.getContentPane().setLayout(null);

    JLabel lblCounter = new JLabel("Counter");
    lblCounter.setFont(new Font("Tahoma", Font.BOLD, 20));
    lblCounter.setBounds(334, 11, 115, 36);
    frame.getContentPane().add(lblCounter);

    JButton btnIncrement = new JButton("Increment");
    btnIncrement.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent arg0) {
            lblNewLabel.setText(String.valueOf((value1+1)));
        }
    });

    btnIncrement.setBounds(21, 98, 180, 198);
    frame.getContentPane().add(btnIncrement);

    lblNewLabel = new JLabel("Your number is " + value1);
    lblNewLabel.setHorizontalAlignment(SwingConstants.CENTER);
    lblNewLabel.setBounds(318, 117, 115, 105);
    frame.getContentPane().add(lblNewLabel);
}

3 个答案:

答案 0 :(得分:2)

您必须将新值分配给value1仍为0。

public void actionPerformed(ActionEvent arg0) {
         value1 += 1;            
         lblNewLabel.setText(String.valueOf(value1));
        }

答案 1 :(得分:1)

int j = 0;
for(int i = 0; i < 10; ++i)
    System.out.println(j + 1);

此语句打印1 10次,因为它不会更改j值。它只是显示它。

然而,以下代码会更改j值。

 int j = 0;
    for(int i = 0; i < 10; ++i)
        System.out.println(j++);


i += 1;// this evaluates to i = i + 1
i ++;  // All these evaluate to
i = i + 1;// i = i + 1
i + 1//doesn't evaluate to i = i + 1

此处i值实际已分配。 试试这个。

public void actionPerformed(ActionEvent arg0) {
         lblNewLabel.setText(String.valueOf((value1++)));
        }

答案 2 :(得分:0)

您的代码的问题在于,每次单击按钮时都会分配相同的值(value1 + 1),因此您实际上是多次执行相同的操作,但结果是相同的。为了获得所需的行为,您应首先增加value1的值,然后将其分配给所需的标签。为此,您必须调整事件处理

GraphRequest request = GraphRequest.newMeRequest(com.facebook.AccessToken.getCurrentAccessToken(), new GraphRequest.GraphJSONObjectCallback() {
            @Override
            public void onCompleted(JSONObject user, GraphResponse response) {
                if (user != null) {
                    doLoginFb(user);
                }

            }
        });
        request.executeAsync();

btnIncrement.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent arg0) {
        lblNewLabel.setText(Integer.toString(++value1));
    }
});