Static no JoptionPane

4 respostas
D

Alguém poderia me explicar porquê o JoptionPane pede Static nas variáveis? No código abaixo, foi pedido para declarar as variáveis como Static, só assim o programa rodou.

import javax.swing.JOptionPane;

public class Livro {

static String titulo;
static String paginas;
static String editora;
static String autor;
static String preco;


public Livro(){};


public static void main(String[] args) {	
	
	
	Livro livro = new Livro();
	
	livro.titulo = "";
	livro.paginas = "";
	livro.editora = "";
	livro.autor = "";
	livro.preco = "";
	
	
	
	titulo = JOptionPane.showInputDialog("Qual o Titulo do livro?");
	paginas = JOptionPane.showInputDialog("Quantas páginas tem o livro?");
	editora = JOptionPane.showInputDialog("Qual o nome da Editora?");
	autor = JOptionPane.showInputDialog("Qual o Autor do livro?");
	preco = JOptionPane.showInputDialog("Qual o Preco do livro?");
	
	JOptionPane.showMessageDialog(null, "O Titulo do livro é: " + titulo);
	JOptionPane.showMessageDialog(null, "A quantidade de páginas do livro é:" + paginas);
	JOptionPane.showMessageDialog(null, "A Editora do livro é: " + editora);
	JOptionPane.showMessageDialog(null, "O Autor do livro é: " + autor);
	JOptionPane.showMessageDialog(null, "O Preco do livro é: " + preco);
	
	

}

}

4 Respostas

Juliobrjp

Porque você está usando os atributos dentro do método main que é static.

métodos static só aceitam atributos static.

D

Júlio, muito obrigado cara! Entendi! Ainda estou aprendendo a linguagem e peco por alguns detalhes. Valeu!

ViniGodoy

Detalhe. Se você está usando muito static, tem 99.99999% de chance de estar fazendo errado.

No caso, ele pediu porque você tentou usar as variáveis diretamente, e não usando a notação livro.

O certo mesmo, seria assim:

import javax.swing.JOptionPane; 
public class Livro { 
    private String titulo; 
    private String paginas; 
    private String editora; 
    private String autor; 
    private String preco; 

    public Livro(){}; 


    public static void main(String[] args) {	
        Livro livro = new Livro(); 
        livro.titulo = JOptionPane.showInputDialog("Qual o Titulo do livro?"); 
        livro.paginas = JOptionPane.showInputDialog("Quantas páginas tem o livro?"); 
        livro.editora = JOptionPane.showInputDialog("Qual o nome da Editora?"); 
        livro.autor = JOptionPane.showInputDialog("Qual o Autor do livro?"); 
        livro.preco = JOptionPane.showInputDialog("Qual o Preco do livro?"); 

        JOptionPane.showMessageDialog(null, "O Titulo do livro é: " + livro.titulo); 
        JOptionPane.showMessageDialog(null, "A quantidade de páginas do livro é:" + livro.paginas); 
        JOptionPane.showMessageDialog(null, "A Editora do livro é: " + livro.editora); 
        JOptionPane.showMessageDialog(null, "O Autor do livro é: " + livro.autor); 
        JOptionPane.showMessageDialog(null, "O Preco do livro é: " + livro.preco); 
    }
}

Note que você havia esquecido do "livro." na maior parte do main.

D

Vini, obrigado pela ajuda. Como falei acima, ainda estou crú na linguagem, mas estou evoluindo. Muito obrigado!

Criado 10 de novembro de 2014
Ultima resposta 12 de nov. de 2014
Respostas 4
Participantes 3