4

私は次のコードを持っています:

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);
            }
        });
    }    
}

いずれかのボタンを押したときにラベルのテキストを変更したいのですが。これどうやってするの?MainMenuクラスがJFrameクラスを拡張しているため、JFrameクラスからメソッドを呼び出すことができることはわかっていますが、値を変更するためにlabel要素を参照する方法が見つかりません。

心から、

Luxo

4

3 に答える 3

1

JLabelをグローバル変数として宣言し、initUI()でそのままインスタンス化します。これで、イベントを処理するときのActionListenerのメソッドで、ラベルのテキストを変更できます。

于 2012-11-07T19:11:15.610 に答える
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);
            }
        });
    }    
}
于 2012-11-07T19:19:48.163 に答える
0

JLabelをグローバル変数として宣言する必要があります。その後、どのメソッドでも、クラスのメソッドをkeyXXX()使用してテキストを変更できます。setText()JLabel

于 2012-11-07T19:12:36.037 に答える