Background em um JTextField

16 respostas
L

Como setar o background em um JTextField sendo que setei o Look and feel na aplicação…
Tento mudar para preto a cor de fundo de um textfield assim

textfield.setBackground(Color.black);

mas não funciona, fica sempre branco…, só o foreground funciona…
será porque setei o look and feel…

o look and feel que setei foi

UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());

16 Respostas

M

Se o foreground funciona por que não usa ele??
Akgumas coisas de interface a gente aprende com o tempo …

vlew :!:

L

Mas eu preciso mudar o fundo do textfield e a cor do texto…
A cor do texto …tudo bem…o setForeground resolve…mas o fundo??? o segbackground não funciona…!!!

M
leopoldof:
Mas eu preciso mudar o fundo do textfield e a cor do texto..... A cor do texto ...tudo bem...o setForeground resolve...mas o fundo???? o segbackground não funciona...!!!!
Cara, eu testei aqui e não deu nenhum problema vai ver você tá se confundindo em alguma coisa... Exemplo rápido:
import java.awt.*;
import javax.swing.*;

@SuppressWarnings("serial")
public class Teste extends JFrame {

	private final JTextField campo;

	public Teste() {
		super("Teste");
		campo = new JTextField();
		campo.setForeground(Color.white);
		Container cp = getContentPane();
		campo.setBackground(Color.black);
		campo.requestFocus();
		cp.add(campo);
		setSize(100, 60);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

	}

	public static void main(String[] ards) {
		new Teste().setVisible(true);
	}

}
Tenta aí!!

vlew :!: :!:

M

Quando você usa o LookAndFeel do sistema ele simplesmente ignora as chamadas de setBackground(). Não conheço nenhuma solução.

M
marcobiscaro2112:
Quando você usa o LookAndFeel do sistema ele simplesmente ignora as chamadas de setBackground(). Não conheço nenhuma solução.
Desculpe, mas o que você falou não faz mto sentido... Ele reconhece sim as chamadas a setBackground(), independente do Look And Feel Testa aí (Roda sim!!):
import java.awt.*;
import javax.swing.*;

@SuppressWarnings("serial")
public class Teste extends JFrame {

	private final JTextField campo;

	public Teste() {
		super("Teste");
		campo = new JTextField();
		campo.setForeground(Color.white);
		Container cp = getContentPane();
		campo.setBackground(Color.black);
		campo.requestFocus();
		cp.add(campo);
		setSize(100, 60);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

	}

	public static void main(String[] args) {
		try {
			//Tanto com o Motif quanto com o Nimbus...
			UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel");
					                      //"com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel"
		} catch (Exception e) {
			e.printStackTrace();
		}
		new Teste().setVisible(true);
	}

}
Ou como o amigo usou:
import java.awt.*;
import javax.swing.*;

@SuppressWarnings("serial")
public class Teste extends JFrame {

	private final JTextField campo;

	public Teste() {
		super("Teste");
		campo = new JTextField();
		campo.setForeground(Color.white);
		Container cp = getContentPane();
		campo.setBackground(Color.black);
		campo.requestFocus();
		cp.add(campo);
		setSize(100, 60);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

	}

	public static void main(String[] args) throws Exception {
		UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
		new Teste().setVisible(true);
	}

}
M

Desculpe, mas o que você falou não faz mto sentido…
Ele reconhece sim as chamadas a setBackground(), independente do Look And Feel

Não, não reconhece. Quando usando o Look And Feel do sistema (ao menos quando se usa GTK) ele ignora. Veja a imagem em anexo (peguei o código que o Metal Java Full postou, mudei o foreground para vermelho e deixei o setBackground(Color.black)).

M

Desculpe, mas o que você falou não faz mto sentido…
Ele reconhece sim as chamadas a setBackground(), independente do Look And Feel

Não, não reconhece. Quando usando o Look And Feel do sistema (ao menos quando se usa GTK) ele ignora. Veja a imagem em anexo (peguei o código que o Metal Java Full postou, mudei o foreground para vermelho e deixei o setBackground(Color.black)).
é esse o problema: GTK.
Testa sem ele q funciona normalmente!!!

vlew :!:

M

Desculpe, mas o que você falou não faz mto sentido…
Ele reconhece sim as chamadas a setBackground(), independente do Look And Feel

Não, não reconhece. Quando usando o Look And Feel do sistema (ao menos quando se usa GTK) ele ignora. Veja a imagem em anexo (peguei o código que o Metal Java Full postou, mudei o foreground para vermelho e deixei o setBackground(Color.black)).
é esse o problema: GTK.
Testa sem ele q funciona normalmente!!!

vlew :!:
Mas GTK é a biblioteca que define o look and feel do sistema. Não dá pra usar o Look And Feel do sistema sem usar da biblioteca GTK. Portanto, o setBackground é ignorado quando usando o Look And Feel nativo em sistemas que usam o GTK como base para interface gráfica.

M

Cara eu não tô conseguindo entender.
Eu tbm estou testando aqui o código e ele está dando certo!!
segue o arquivo src!!

vlew

M

Metal Java Full:
Cara eu não tô conseguindo entender.
Eu tbm estou testando aqui o código e ele está dando certo!!
segue o arquivo src!!

vlew


Qual o seu sistema operacional?

M

Windows 7

M

Pois bem. Os sistemas Unix based (como o próprio Unix e o Linux) podem ter diversas interfaces gráficas rodando sobre ele (inclusive simultaneamente). As mais populares são o GNOME e o KDE. O GNOME é baseado em uma biblioteca usada para fazer renderização de componentes gráficos chamada GTK. E devido a um bug (provavelmente no Swing), quando usando o look and feel nativo (ou seja, usando as bibliotecas do GTK para fazer a renderização) a cor de fundo é ignorada.

Em outras palavras: você acha que eu sou louco pois para você está tudo normal (o bug não te afeta, mas ele existe).

M

Às vezes a liberdade tem um preço a se pagar… :slight_smile:
Então, sabendo disso (e principalmente que o Windows “ainda é” o SO mais usado do mundo) você não acha que deveria ter perguntado leopoldof qual So ele tbm usava?!

PS: Não uso Linux… e…

não te acho louco!!
Hehe

M

Metal Java Full:
Às vezes a liberdade tem um preço a se pagar… :slight_smile:
Então, sabendo disso (e principalmente que o Windows “ainda é” o SO mais usado do mundo) você não acha que deveria ter perguntado leopoldof qual So ele tbm usava?!

Deveria ter perguntado, mas pensei que o bug afetasse todos os SOs.

E eu prefiro trocentas vezes pagar o preço de ter o fundo branco ao invés de preto à pagar uma licença do Windows (lembre-se sempre: o Windows não é seu! O software é licenciado e não vendido).

M

marcobiscaro2112:
Metal Java Full:
Às vezes a liberdade tem um preço a se pagar… :slight_smile:
Então, sabendo disso (e principalmente que o Windows “ainda é” o SO mais usado do mundo) você não acha que deveria ter perguntado leopoldof qual So ele tbm usava?!

Deveria ter perguntado, mas pensei que o bug afetasse todos os SOs.

E eu prefiro trocentas vezes pagar o preço de ter o fundo branco ao invés de preto à pagar uma licença do Windows (lembre-se sempre: o Windows não é seu! O software é licenciado e não vendido).


Gosto é gosto!!
Eu prefiro trezentas vezes “não pagar” por uma versão free acadêmica (e permanente) de um dos melhores Sistemas Operacionais de todos os tempos, do que ficar detido a linhas e mais linhas de comando!!

Mas o Linux tá evoluindo e de um jeito ou de outro terei de me adaptar (Obs: Não tenho nada contra ele…, é apenas uma questão de “gosto” e, como diria meu velho avô: “Gosto, a gente não discute…”).

vlew:!: :!:

M

Metal Java Full:
marcobiscaro2112:
Metal Java Full:
Às vezes a liberdade tem um preço a se pagar… :slight_smile:
Então, sabendo disso (e principalmente que o Windows “ainda é” o SO mais usado do mundo) você não acha que deveria ter perguntado leopoldof qual So ele tbm usava?!

Deveria ter perguntado, mas pensei que o bug afetasse todos os SOs.

E eu prefiro trocentas vezes pagar o preço de ter o fundo branco ao invés de preto à pagar uma licença do Windows (lembre-se sempre: o Windows não é seu! O software é licenciado e não vendido).


Gosto é gosto!!
Eu prefiro trezentas vezes “não pagar” por uma versão free acadêmica (e permanente) de um dos melhores Sistemas Operacionais de todos os tempos, do que ficar detido a linhas e mais linhas de comando!!

Mas o Linux tá evoluindo e de um jeito ou de outro terei de me adaptar (Obs: Não tenho nada contra ele…, é apenas uma questão de “gosto” e, como diria meu velho avô: “Gosto, a gente não discute…”).

vlew:!: :!:


O antigo e persistente preconceito de que Linux é linha de comando… é como dizer que Java é lento: um dia isso já foi verdade, mas agora não é mais.

Não consigo pensar em nada que não possa ser feito via interface gráfica no Linux neste momento…

Mas como já dito: gosto não se discute…

Criado 18 de dezembro de 2009
Ultima resposta 21 de dez. de 2009
Respostas 16
Participantes 3