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. }
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
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.
“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");
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)
É 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.