Java - 按下按钮时更改标签文本
Java - Change label text on button press
我已经根据要求编辑了问题
所以我想要一个标签在按下按钮时更改它的文本。但是当我尝试在单击按钮时在标签上使用 setText() 时,它无法识别它。这是为什么?
public class SingleButton extends JPanel
implements ActionListener {
protected JButton b1;
public SingleButton() {
b1 = new JButton("Axxxxxx"/*, leftButtonIcon*/);
b1.setActionCommand("enableb1");
b1.setEnabled(true);
b1.addActionListener(this);
add(labelUpn);
labelUpn.setText("UPN number here");
}
public void actionPerformed(ActionEvent e) {
if ("enableb1".equals(e.getActionCommand())) {
b1.setEnabled(false);
labelUpn.setText("New Text");
}
}
也许这就是您的问题的解决方案......
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class JLabelDemo {
public JLabel labelText;
public JLabelDemo() {
JFrame f = new JFrame("JLabel Demo");
f.setVisible(true);
f.setSize(500, 500);
f.setLayout(null);
labelText = new JLabel("Whosebug");
labelText.setBounds(50, 100, 150, 30);
f.add(labelText);
JButton btn = new JButton("Change Text");
btn.setBounds(70, 200, 150, 60);
f.add(btn);
btn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
labelText.setText("Google.com");
}
});
}
public static void main(String[] args) {
new JLabelDemo();
}
}
您的代码存在一些问题:
。您从未在 actionPerformed()
方法内的标签上调用 setText
。
。 JLabel labelUpn
是构造函数的局部变量。如果您想从 actionPerformed()
中访问它,请将其设置为 class 变量
考虑到这一点,您可以通过将 e.getSource()
转换为 JButton 来判断单击了哪个按钮,然后您可以通过调用 getText( ) 就可以了。
public class ButtonDemo extends JPanel
implements ActionListener {
protected JButton b1, b2, b3, b4;
protected JLabel labelUpn;
public ButtonDemo() {
//...
labelUpn = new JLabel("UPN number here on button press");
//...
}
public void actionPerformed(ActionEvent e) {
//...
JButton clicked = (JButton) e.getSource();
labelUpn.setText(clicked.getText());
}
我刚刚阅读了您的代码。
这可能会解决您的问题。
您没有在 actionPerformed 方法中调用 Button_name.setText("Text")
代码在
https://textsaver.flap.tv/lists/1ppi
我已经根据要求编辑了问题
所以我想要一个标签在按下按钮时更改它的文本。但是当我尝试在单击按钮时在标签上使用 setText() 时,它无法识别它。这是为什么?
public class SingleButton extends JPanel
implements ActionListener {
protected JButton b1;
public SingleButton() {
b1 = new JButton("Axxxxxx"/*, leftButtonIcon*/);
b1.setActionCommand("enableb1");
b1.setEnabled(true);
b1.addActionListener(this);
add(labelUpn);
labelUpn.setText("UPN number here");
}
public void actionPerformed(ActionEvent e) {
if ("enableb1".equals(e.getActionCommand())) {
b1.setEnabled(false);
labelUpn.setText("New Text");
}
}
也许这就是您的问题的解决方案......
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class JLabelDemo {
public JLabel labelText;
public JLabelDemo() {
JFrame f = new JFrame("JLabel Demo");
f.setVisible(true);
f.setSize(500, 500);
f.setLayout(null);
labelText = new JLabel("Whosebug");
labelText.setBounds(50, 100, 150, 30);
f.add(labelText);
JButton btn = new JButton("Change Text");
btn.setBounds(70, 200, 150, 60);
f.add(btn);
btn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
labelText.setText("Google.com");
}
});
}
public static void main(String[] args) {
new JLabelDemo();
}
}
您的代码存在一些问题:
。您从未在 actionPerformed()
方法内的标签上调用 setText
。
。 JLabel labelUpn
是构造函数的局部变量。如果您想从 actionPerformed()
考虑到这一点,您可以通过将 e.getSource()
转换为 JButton 来判断单击了哪个按钮,然后您可以通过调用 getText( ) 就可以了。
public class ButtonDemo extends JPanel
implements ActionListener {
protected JButton b1, b2, b3, b4;
protected JLabel labelUpn;
public ButtonDemo() {
//...
labelUpn = new JLabel("UPN number here on button press");
//...
}
public void actionPerformed(ActionEvent e) {
//...
JButton clicked = (JButton) e.getSource();
labelUpn.setText(clicked.getText());
}
我刚刚阅读了您的代码。 这可能会解决您的问题。 您没有在 actionPerformed 方法中调用 Button_name.setText("Text") 代码在 https://textsaver.flap.tv/lists/1ppi