Problema com java, help!

7 respostas
R

Galera, estou tendo um problema com o java, eu tenho que fazer um sistema, e nesse sistema contem algumas JLabel que recebem a mesma cor da fonte e de fundo, só que eu não queria declarar o código toda hora queria fazer um método e toda vez que precisar só chama-lo, mas ta dando erro, como fazer?

1.           lblIdLogin = new JLabel(" Login: ");
2.           Color log = new Color(253, 182, 85);
3.           lblIdLogin.setForeground(log);
4.           lblIdLogin.setOpaque(true);
5.           Color lblLog = new Color(79,84,85);
6.           lblIdLogin.setBackground(lblLog);
7.           
8.           lblSenhaLogin = new JLabel(" Senha: ");
9.           Color senhaL = new Color(253, 182, 85);
10.           lblSenhaLogin.setForeground(senhaL);
11.           lblSenhaLogin.setOpaque(true);
12.           Color lblSenha = new Color(79,84,85);
13.           lblSenhaLogin.setBackground(lblSenha);

esse é o método que eu fiz, porém sempre aparece esse erro:
method corDeFundo in class DesignTela cannot be applied to given types;

1.         public void corDeFundo(JLabel corDeFundo){
2.            Color corDeF= new Color(253, 182, 85);
3.            corDeFundo.setForeground(corDeF);
4.         }

7 Respostas

peczenyj

mostre o erro completo.

staroski

Eu criaria o seguinte método

private JLabel createLabel(String text) {
	JLabel label = new JLabel(text);
	label.setForeground(new Color(253, 182, 85));
	label.setOpaque(true);
	label.setBackground(new Color(79, 84, 85));
	return label;
}

E inicializaria as variáveis assim:

lblIdLogin = createLabel(" Login: ");
lblSenhaLogin = createLabel(" Senha: ");
R

funcionou, meu código diminuiu bastante com o uso do método.
porem ele funcionou somente na mesma classe, como eu poderia colocá-lo em uma outra classe e puxá-lo quando eu precisar.

eu tentei mas ele aparece o seguinte erro:
error: non-static method createLabel(String) cannot be referenced from a static context

Fabio_Dos_Reis

Você deve estar invocando o método de maneira errada em outra classe, você está fazendo assim:
new SuaClasseQueTemOMetodo.metodo(“seu texto”).

se você declarar seu método como static, assim, private static Jlabel metodo(“text”){};
você vai ter que invocar assim SuaClasseQueTemOMetodo.metodo(“seu texto”). sem o new
lembrando que métodos static não compartilham instancia.

staroski

“pucha-lo”? Essa doeu…
O correto seria “puxá-lo” mas mesmo assim, você não “puxa” métodos, você invoca métodos.

Quanto a mensagem de erro, ela te explica que não se pode invocar um método não-estático dentro de um contexto estático.

Sugiro criar uma classe, mover esse método de criação para essa classe. Como o seu método não mexe em atributos de instância, declare ele como static.
Assim, quem for criar um JLabel, vai usar sua classe utilitária pra isso.

Exemplo:

JLabel meuJLabel = MinhaClasseUtilitaria.createLabel("Nome do Label");
R

Nuss agora que eu vi, doeu até em mim kkk
desculpa pelo erro de PT, e os erros da sintaxe do java, eu fiz do jeito que você explicou mas ele da esse erro:

error: createLabel(String) has private access in DesignTela

eu mudo o encapsulamento para public, ele não acusa mais nenhum erro, mas ele não executa aparece outra mensagem, e eu não sei como “tratar” os erros.

esse é a mensagem que aparece quando eu mudo o encapsulamento para public e tento executar:

1.             Exception in thread "main" java.lang.NullPointerException

2.      	at java.awt.Container.addImpl(Container.java:1097)
3.      	at java.awt.Container.add(Container.java:417)
4.      	at TelaCadastro.<init>(TelaCadastro.java:107)
5.      	at TelaCadastro.main(TelaCadastro.java:185)

Eu estou invocando o método assim.

1. JLabel lblIdLogin = DesignTela.createLabel(" Login: ");

desde já agradeço o suporte que vem me dando, fazer uma interface gráfica é muito complicado.

staroski

É muito importante aprender a interpretar o código do StackTrace.
No construtor da classe TelaCadastro, mais precisamente na linha 107, você está tentando acessar um membro de um objeto que não foi inicializado.

Criado 20 de outubro de 2016
Ultima resposta 21 de out. de 2016
Respostas 7
Participantes 4