我有JLabel
和JButton
命名增量。我想在每次点击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);
}
答案 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));
}
});