今天我尝试在Java上做一个“窗口”的例子。我尝试Concat标题,但我的“GetTitle()”不起作用!有人可以帮我这个吗?
为什么“公共级MiVentana扩展JFrame {”和“MiVentana Frame =新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
答案 0 :(得分:1)
在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()));