今天,我尝试在Java上做一个“窗口”的例子。我尝试合并标题,但我的“ GetTitle()”不起作用!有人可以帮我吗?

以及为什么“公共类MiVentana扩展了JFrame {”和“ MiVentana Frame = new MiVentana(“ Titulo”);”说警告?

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class MiVentana extends JFrame {

public MiVentana (String Titulo){
    this.setTitle(Titulo);
    this.setSize(300,400);
    this.setLocation(160,80);
    this.setLayout(new FlowLayout());
    this.ConfigurarVentana();
    this.setVisible(true);
}

public void ConfigurarVentana(){
    JPanel panel = new JPanel();
    JButton boton = new JButton ("OK");
    boton.addActionListener(new EscuchadorBoton());
    panel.add(boton);
    this.add(panel);
}

class EscuchadorBoton implements ActionListener{
    public void actionPerformed(ActionEvent a){
        this.setTitle(this.getTitle().concat(this.getTitle()));
    }

}
public static void main(String[] args) {
    MiVentana Frame = new MiVentana("Titulo");
    //frameTest.setVisible(true);
            }
    }


编辑:我正在Ubuntu 14.04 IDE Eclipse 3.8上

最佳答案

this中使用ActionListener是指EscuchadorBoton侦听器,而不是MiVentana的实例-您的JFrame

使用MiVentana.this应该引用该窗口,而不是侦听器,并且您可以由此获取并设置标题。

This post描述了正在发生的事情-基本上,您希望封闭类(而不是封闭类)中的this

基本上不是这样做:

this.setTitle(this.getTitle().concat(this.getTitle()));


您需要这样做:

MiVentana.this.setTitle(MiVentana.this.getTitle().concat(MiVentana.this.getTitle()));

07-26 03:49