简体   繁体   English

有关简单的Swing侦听器代码的一些疑问

[英]Some doubts about a simple Swing listener code

I am studying Java Swing and listener use and I have some problems with the following simple code: 我正在研究Java Swing和侦听器的使用,并且以下简单代码有一些问题:

package com.mycompany.experiment;

import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;

public class ListenerExp1 {

    private class MyButtonListener implements ActionListener {
        public void actionPerformed(ActionEvent evt) {
            // Qui scriviamo il codice che vogliamo eseguire all' azione del
            // click sul pulsante
        }
    }

    JFrame frame = new JFrame("FrameDemo");
    frame.setMinimumSize(new Dimension(800, 400));

    JButton button = new JButton("Cliccami");
    MyButtonListener listener = new MyButtonListener();

    button.addActionListener(listener);

}

In this code I declare a listener class and I try to create a JFrame and a JButton objects. 在这段代码中,我声明了一个侦听器类,并尝试创建一个JFrame和一个JButton对象。

The problem is that when I try to add some properties to these objects by the lines: 问题是当我尝试通过以下行向这些对象添加一些属性时:

frame.setMinimumSize(new Dimension(800, 400));

and

button.addActionListener(listener);

Eclipse sign me the following error on these 2 lines: Eclipse在这两行上为我签名了以下错误:

Multiple markers at this line - Syntax error on token(s), misplaced construct(s) - Syntax error on token "setMinimumSize", = expected after this 这行有多个标记-令牌语法错误,构造放置错误-令牌“ setMinimumSize”语法错误,=此后预期

What is wrong? 怎么了?

Tnx 特纳克斯

Andrea 安德里亚

These statements should be in a code block such as a method a constructor 这些语句应位于代码块中,例如方法,构造函数

JFrame frame = new JFrame("FrameDemo");
frame.setMinimumSize(new Dimension(800, 400));

JButton button = new JButton("Cliccami");
MyButtonListener listener = new MyButtonListener();

button.addActionListener(listener);

In addition you want to invoke them in the EDT like so 另外,您希望像这样在EDT调用它们

SwingUtilities.invokeLater(new Runnable() {

        @Override
        public void run() {
            JFrame frame = new JFrame("FrameDemo");
            frame.setMinimumSize(new Dimension(800, 400));

            JButton button = new JButton("Cliccami");
            MyButtonListener listener = new MyButtonListener();

            button.addActionListener(listener);
        }
    });

Read: Initial Threads 阅读: 初始线程

In java, you can not initialize instance without or outside of method. 在Java中,如果没有方法或不在方法外部,则无法初始化实例。

put following of your code in a method. 将您的代码跟随在一个方法中。

JFrame frame = new JFrame("FrameDemo");
frame.setMinimumSize(new Dimension(800, 400));

JButton button = new JButton("Cliccami");
MyButtonListener listener = new MyButtonListener();

button.addActionListener(listener);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM