Mudando a cor do Background?

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á…

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

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);

Prezados;

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

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…

O código é simples, pois o objetivo é entender o funcionamento.

[code]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);
}

}[/code]

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

Prezados;

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

[code]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();
}

}[/code]

[quote=Daniel Ilha]Prezados;

Me de uma ajuda com relação as dúvidas apresentadas.[/quote]
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?

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?

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

Valeu Mantu!!

Vou estudar os links mencionados.

Muito Obrigado mesmo!

x

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