Mudando a cor do Background?

13 respostas
D

Prezados;
Não entendi a diferença:

Assim funciona!

this.t1.getContentPane().setBackground(new Color(100,100,100));

Assim não funciona!

Color c = new Color(100); this.t1.setBackground(c);

Agradeço desde já…

13 Respostas

Foxlol

E assim:

Color c = new Color(100, 100, 100);
this.t1.setBackground(c);

http://java.sun.com/javase/6/docs/api/java/awt/Color.html

D

Também não…

Color c = new Color(100, 100, 100); this.t1.setBackground(c);

Mas assim funciona!

Color c = new Color(100,100,100); this.t1.getContentPane().setBackground(x);

D

Prezados;

Estou a bastante tempo com esta dúvida, peço uma dica, para progredir em meus estudos.

alucardeck

eh por causa do getContentPane();

provavelmente vc esta usando o JFrame (ou JPanel)…
vindo diretamente do “extends”…

entra esse comando serve pra vc “definir” de onde vem o painel a ser pintado…
eh assim q eu entendo q isso funciona na pratica …

se vc postar o codigo inteiro fica mais facil explicar o motivo…

D
O código é simples, pois o objetivo é entender o funcionamento.
import javax.swing.*;
Class XTela_v001{

  JFrame t1 = new JFrame();

  void setBackground(int r,int g, int b){
      Color x = new Color(r,g,b);
      this.t1.setBackground(x);
  }

  void setSize(int x,int y){
      this.setSize.(x,y);
  }

  void setVisible(boolean visible){
      this.setVisible(visible);
  }

}

O this.t1.setBackground(x) -> não funciona,ou melhor, não muda a cor
Se mudar para this.t1.getContentPane().setBackground(x) -> funciona.

D

Prezados;

Me de uma ajuda com relação as dúvidas apresentadas.

marciogm
import java.awt.Color;
import java.awt.Container;

import javax.swing.JFrame;

public class Main {

	private JFrame t1;
	private Color color;

	public Main() {
		t1 = new JFrame();
		color = new Color(150, 100, 10);
		t1.setSize(100, 100);
		Container cp = t1.getContentPane();
		cp.setBackground(color);
		t1.setVisible(true);
		t1.setDefaultCloseOperation(t1.EXIT_ON_CLOSE);
	}

	public static void main(String[] args) {
		Main main = new Main();
	}
}
Mantu

Daniel Ilha:
Prezados;

Me de uma ajuda com relação as dúvidas apresentadas.


Caríssimo! É como o colega alucardeck disse.
this.t1.setBackground(x) “não funciona” (Entre aspas porque funciona sim, não da forma como você esperava, mas funciona) porque t1 é um JFrame. Um JFrame já vem com um JPanel “embutido”, contido. É nesse JPanel que são inseridos os botões, caixas de texto, etc… Resumindo, é esse JPanel o que você efetivamente vê na tela. E o método getContentPane() te retorna exatamente esse JPanel. Por isso que this.t1.getContentPane().setBackground(x) funciona, por aqu aí você está colorindo o JPanel do seu JFrame, e não o JFrame em si.
Capisci?

D

Valeu pela explicação, pois estava a bastante tempo com esta dúvida.

Aproveito para perguntar.

O Conceito de tela o mais correto e usar JFrame ou JPane?

Mantu

Um JPanel é algo pra ser utilizado dentro de um JFrame e dentro de outros JPanels. Lembre-se que o JFrame já vem com um JPanel de ínicio, e lembre-se que você pode trocar esse JPanel ao seu bel prazer!
Um outro tipo de tela é a JDialog, mais utilizada para a criação de janelinhas de diálogo, geralmente iniciadas a partir um JFrame (i.e.: Um botão que abre uma caixinha de diálogo com alguns campos a serem preenchidos).
Se vc souber ler em inglÊs, dê uma olhada nos links abaixo:

http://java.sun.com/docs/books/tutorial/index.html

http://java.sun.com/docs/books/tutorial/ui/index.html

http://java.sun.com/docs/books/tutorial/ui/features/components.html

http://java.sun.com/docs/books/tutorial/uiswing/components/frame.html

http://java.sun.com/docs/books/tutorial/uiswing/components/panel.html
http://java.sun.com/docs/books/tutorial/uiswing/components/dialog.html
http://java.sun.com/docs/books/tutorial/uiswing/components/internalframe.html

D

Valeu Mantu!!

Vou estudar os links mencionados.

Muito Obrigado mesmo!

tecnocrata

x

tecnocrata

so adicionando , como voce sabe cada pane tem varios pane “superiores” ate chegar ao root pane , entao vc acabar por ter que especificar qual deve ser mudado . da uma olhada em :
http://java.sun.com/docs/books/tutorial/uiswing/components/rootpane.html
abracos

Criado 7 de junho de 2008
Ultima resposta 15 de jun. de 2008
Respostas 13
Participantes 6