Herança: Sobrescrevendo metodos sem inutiliza-los

pessoal, fiz uma classe que é um JFrame que ocupa a tela toda.

import javax.swing.JFrame;
import java.awt.Toolkit;
import java.awt.GraphicsConfiguration;
import java.awt.Dimension;

public class MaxFrame extends JFrame
{	Dimension Tela = Toolkit.getDefaultToolkit().getScreenSize();
	public MaxFrame()
	{  	super();
	   	setSize(Tela);
	   	setUndecorated(true);
		}

	public MaxFrame(GraphicsConfiguration gc)
	{ 	super(gc);
		super.setSize(Tela);
		setUndecorated(true);
		}

	public MaxFrame(String title)

	{	super(title);
	    setSize(Tela);
		setUndecorated(true);
		}

	public MaxFrame(String title, GraphicsConfiguration gc)
	{	super(title, gc);
		setSize(Tela);
		setUndecorated(true);
		}

	public static void main (String args[])
	{	MaxFrame ae = new MaxFrame();
		ae.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		ae.show();
		}




	}

mas eu quero que o metodo setSize da classe “avô” Frame não possa ser utilizado por quem usar a classe MaxFrame
por outro lado, eu quero usar para mudar o tamanho da tela…

se eu sobreescrever o metodo com nada dentro eu não mudo o tamanho da tela…

como faço?

Uma classe pode extender as dimensões da sua class-pai, mas não reduzí-las, para que caibam no mesmo espaço.

O que isto quer dizer é que você tem que prover um método setSize(). Inclua ele vazio.

[]s

se eu fizer isso terei problemas em mudar a janela de tamanho…

Inclua um outro método que chama super.setSize() para vc usar :wink:

[]s

não funfou…
tenta ai por favor…

O problema é o seguinte: o setSize(Dimension) chama resize() que chama setSize(int, int).

se você sobrescrever as duas setSize(), não adianta chamar super.setSize(Dimension), você só vai pdoer sobrescrever a setSize(Dimension), não a setSize(int, int).

O que é uma bela bosta, visto que não atende ao que você precisa.

O que você pode fazer é isso:

    public void setSize(Dimension d) {
    }
    public void setSize(int width, int height) {
        super.setSize((int)Tela.getWidth(), (int)Tela.getHeight());
    }

Assim você vai manter o frame semrpe com o mesmo tamanho. apra usar issio, você pode organizar melhor seu código, evitando fazer algumas chamadas denecessárias e tal. Foi o que pude pensar…

[]s
Ps.: Objeto com letra maiuscula não é parte da convenção :wink: seria melhor

//tela e não Tela
Dimension tela =...

uh… eu sempre ouvi falar que objetos começam com letra maiuscula e tipos primitivos com letra minuscula, mas whatever…

bom, se resolve o meu problema, ta bão… não importa que seja coxambra…

[quote=“microfilo”]uh… eu sempre ouvi falar que objetos começam com letra maiuscula e tipos primitivos com letra minuscula, mas whatever…

bom, se resolve o meu problema, ta bão… não importa que seja coxambra…[/quote]

http://java.sun.com/docs/codeconv/html/CodeConvTOC.doc.html

[quote=“Code Conventions for The Java Programming Language, Naming Conventions”]
Except for variables, all instance, class, and class constants are in mixed case with a lowercase first letter. Internal words start with capital letters. Variable names should not start with underscore _ or dollar sign $ characters, even though both are allowed.

Variable names should be short yet meaningful. The choice of a variable name should be mnemonic- that is, designed to indicate to the casual observer the intent of its use. One-character variable names should be avoided except for temporary “throwaway” variables. Common names for temporary variables are i, j, k, m, and n for integers; c, d, and e for characters. [/quote]

[]s