我有以下代码:
package testOpdracht1;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.Date;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.io.InputStream;
public class MainMenu extends JFrame implements KeyListener {
public MainMenu() {
initUI();
}
public final void initUI() {
JLabel label1 = new JLabel("text1");
add(label1);
addKeyListener(this);
setTitle("Bla");
setPreferredSize(new Dimension(400,250));
setMinimumSize(getPreferredSize());
setResizable(true);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public void keyPressed(KeyEvent e) {
}
public void keyReleased(KeyEvent e) {
}
public void keyTyped(KeyEvent e) {
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
MainMenu ex = new MainMenu();
ex.setVisible(true);
}
});
}
}
我想在按下任何按钮时更改标签中的文字。我怎样才能做到这一点? 我知道我可以从JFrame类调用方法,因为我的MainMenu类扩展了它,但我找不到引用label元素的方法来改变它。
此致
LUXO
答案 0 :(得分:1)
将JLabel声明为全局变量,并在initUI()中实例化它。现在,在处理事件的ActionListener方法中,您可以在那里更改标签的文本。
答案 1 :(得分:1)
将代码修改为:
package testOpdracht1;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.Date;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.io.InputStream;
public class MainMenu extends JFrame implements KeyListener {
final JLabel label1 = new JLabel("text1");
public MainMenu() {
initUI();
}
public final void initUI() {
add(label1);
addKeyListener(this);
setTitle("Bla");
setPreferredSize(new Dimension(400,250));
setMinimumSize(getPreferredSize());
setResizable(true);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public void keyPressed(KeyEvent e) {
label1.setText("foo");
}
public void keyReleased(KeyEvent e) {
}
public void keyTyped(KeyEvent e) {
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
MainMenu ex = new MainMenu();
ex.setVisible(true);
}
});
}
}
答案 2 :(得分:0)
您必须将JLabel声明为全局变量,然后在任何keyXXX()
方法中,您可以使用setText()
类的JLabel
方法更改其文本。