Domanda

Ho eseguito la sottoclasse java.awt .Frame e hanno sostituito paint () come desidero disegnare manualmente l'intero contenuto della finestra.

Tuttavia, sull'oggetto grafico, (0,0) corrisponde all'angolo in alto a sinistra della finestra dentro la decorazione della barra del titolo, non il primo pixel disegnabile.

Posso determinare la coordinata del primo pixel disegnabile (ovvero l'altezza della decorazione) in modo multipiattaforma, evitando di usare un Mac OS X specifico fattore di fondente ? Sarò costretto a nidificare un Panel componente per trovare l'area disegnabile effettiva della finestra?

Qui, il mio codice non riesce a centrare il quadrato blu all'interno dell'area verniciabile della finestra:

@Override
public void paint (Graphics g) {
    g.setColor(Color.BLUE);
    g.setPaintMode();
    g.fillRect(30, 30, getWidth()-60, getHeight()-60);
}
È stato utile?

Soluzione

Puoi trovare gli inserti del frame chiamando il metodo getInsets (definito in Container). Le inserzioni di frame sono discusse nella parte superiore dei documenti API Frame.

Altri suggerimenti

Quindi vuoi dipingere l'intera area e non vuoi affatto una barra del titolo?

Supponendo che tu usi JDk 1.4 (almeno), puoi dichiarare che il frame è "non decorato". (Java.awt.Frame # setUndecorated (booleano)). In questo modo non viene creata alcuna barra del titolo e pertanto l'area verniciabile è la stessa dell'area consumata dai fotogrammi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top