Dúvida sobre variáveis e métodos estáticos (JOptionPane)

Dae galera! Seguinte: estou fazendo um trabalho de engenharia de usabilidade, e o professor pediu que para a exibição de mensagens ao usuário, fosse usada uma classe com métodos estáticos igual ao JOptionPane

Bom, no JOptionPane, uma das formas (a que sempre uso), entre outras sobrecargas é chamá-lo da seguinte forma:

 JOptionpane.showMessageDialog(null, "Mensagem a ser mostrada ao usuário"); 

No caso do meu trabalho, é pra ser feita a mesma coisa (chamada estática), com alguns parâmetros diferentes:

 Dialogo.mostrarDialogo("Titulo da Janela", "Mensagem ao usuario", true, "imagens/imagemTeste.GIF"); 

A única coisa que muda são os parâmetros.

A minha dúvida é: como devo estruturar o construtor e este método estático na classe ‘Dialogo’ para a chamada acontecer do mesmo jeito? Olhei a classe do JOptionPane, mas é muito extensa, difícil de entender.

OBS: a parte lógica jah está pronta, minha dúvida é qto à sintaxe de variáveis e métodos estáticos, por isso vou demonstrar somente as partes que interessarão no entendimento, ok? :slight_smile:

Minha classe basicamente é essa: (não estou com ela aqui, vou fazer de cabeça)

public class Dialogo extends JDialog {

	private JLabel jLMensagem;
	private JLabel jLImagem;
	private JButton jBFechar;

/*1ª DÚVIDA: já que o método mostrarDialogo receberá 
os parâmetros, preciso declarar esses tipos como estáticos e globais? */

	private static String titulo;
	private static String mensagem;
	private static boolean sucesso; /*sucesso ou não na transação, q poderá ocorrer de várias formas */
	private static String imagemClassPath; /*setar o caminho da imagem, que estará em um pacote dentro do projeto*/

/*2ª DÚVIDA: O que devo inicializar no construtor? Será que devo fazer uma sobrecarga? Ou deixo vazio?
não entendi essa parte, pois nenhum objeto é criado, então não sei o q fazer no construtor.
devo tratar alguma coisa referente aos tipos estáticos definidos anteriormente aqui no construtor? */
	public Dialogo() {
		inicializarComponentes(); /*chamada de método criada pelo NetBeans para inicializar os componentes GUI*/
	}

/*3ª DÚVIDA: os parâmetros devem ser passados aqui mesmo?*/

	public static void mostrarDialogo(String titulo, String mensagem, boolean sucesso, String iconeClassPath) {
		this.titulo = titulo /*se eu fizer isso gera uma exceção non-static*/
		/*tratamento do método para configurar a janela conforme os parâmetros passados*/
	}

/* 4ª DÚVIDA: devo chamar este método no construtor mesmo? Pois não entendi a real função de um construtor que não recebe parâmetros numa classe com métodos estáticos */
	public void inicializarComponentes() {
	/*inicialização e configuração dos três componentes GUI*/
	}

/*5ª DÚVIDA: os getters e setters devem conter algo diferente?
por último vÊm os getters() e setters() das variáveis estáticas criadas*/
}

Acho q era isso. A classe é bem simples, mas apesar de já ter aprendido teoricamente o ‘static’, nunca tinha usado em prática, por isso sou leigo no assunto :slight_smile:
A necessidade mesmo é só fazer um JOptionPane com menos possíbilidades, chamado exatamente da mesma forma, mas mais “bonitinho”, já q o projeto é para desenhar interfaces amigáveis… :slight_smile:

Obrigado! E desculpem a falta de conhecimento…
CNA

Seguinte cara vou tentar te explicar como essa bagaça de static funciona.

variáveis static são membros da classe e não do objeto

quer dizer que qualquer alteração em seu valor vai alterar para todas as chamadas desta variável.

só que existe alguma regras que é melhor você estudar, tipo você não pode declarar uma varíavel static dentro de
um método static ;
Mas você pode utilizar ela dentro do método static
veja este exemplo:

[code]
public class A {

static int id;


public static  void teste (int id){
	id = A.id  ;
	System.out.println(id);
}

	 
		  public static void main(String[] args) {				  
			  id = 10;
		      System.out.println(id);
		      A.teste(9);
		}

} [/code]

Apesar de você estar passando o numero 9 para o método teste, você está setando a variável da classe id para 10, logo a saída deste código será 10 e 10.
(é só um exemplo rápido que fiz aqui pra ver se vc entende como funciona)

1° os métodos static sõ feitos para que você possa chama-lo sem criar um objeto da classe

tipo A.teste(9);
não precisa instanciar um novo objeto da classe, logo o construtor não será chamado.

Espero que ajude em alguma coisa.[/code]