[RESOLVIDO]Como aprender a criar interfaces?

19 respostas
D

Estou no inicio do capitulo 4 da 1ª edição do livro Java como programar(pag: 110) e estou na dúvida de como iniciar aprendisado de como fazer interfaces.

Estou me batendo muito no Java porque estou acustumado com Visual Studio que é só arrastar.

Vocês podem me ajudar a intender melhor como programar interfaces em java?

Eu só quero o básicom em JPanel.

Coloquei como interface no eclipse:

package a001;
import javax.swing.JPanel;
import java.awt.Graphics;



public interface DrawPanel extends JPanel{
	
	public void paintComponent( Graphics g )
	{
		
		
		super.paintComponent( g );
		
		int width = getWidth();
		
		int heigth = getHeigth();
		
		g.drawLine(0 ,0 , width, heigth);
		
		g.drawLine(0 , width, heigth, 0);
	}

}

e como controle:

package a001;
import javax.swing.JFrame;


public class test001 {
	
	public static void main (String args[]){
		
		DrawPanel = new DrawPanel();
		
		JFrame applicaion = new JFrame();
		
		application.setDefeautClosseOperation( JFrame.EXIT_ON_CLOSE );
		
		application.add( panel );
		application.setsize( 250,250 );
		application.setvisibel( true );
		
		
		
		
		
		
	}

}

Como o exemplo mostrado no livro, só que esta infestado de erro. Por que isto?

19 Respostas

ViniGodoy

Pq está cheio de erros de sintaxe? Na linha 11, você declarou a variável como applicaion, quando era application.
Você escreveu setDefeautClosseOperation, quando deveria ser setDefaultCloseOperation e setvisibel, no lugar de setVisible.

Na outra classe escreveu getHeigth no lugar de getHeight.

D

ViniGodoy:
Pq está cheio de erros de sintaxe? Na linha 11, você declarou a variável como applicaion, quando era application.
Você escreveu setDefeautClosseOperation, quando deveria ser setDefaultCloseOperation e setvisibel, no lugar de setVisible.

Na outra classe escreveu getHeigth no lugar de getHeight.

Realmente, estou estudando tanto que estou fazendo muita besteira. Acho que é cansasso.

Mais mesmo depois disto continua e não intendo o que fiz de errado.

package a001;
import javax.swing.JFrame;


public class test001 {
	
	public static void main (String args[]){
		
		DrawPanel = new DrawPanel();
		
		JFrame application = new JFrame();
		
		application.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
		
		application.add( panel );
		application.setsize( 250,250 );
		application.setVisible( true );
		
		
		
		
		
		
	}

}
package a001;
import javax.swing.JPanel;
import java.awt.Graphics;



public interface DrawPanel extends JPanel

{
	
	public void paintComponent( Graphics g )
	{
		
		
		super.paintComponent( g );
		
		int width = getWidth();
		
		int height =  getHeight();
		
		g.drawLine(0 ,0 , width, heigth);
		
		g.drawLine(0 , width, heigth, 0);
	}

}
package a001;
import javax.swing.JPanel;
import java.awt.Graphics;



public interface DrawPanel extends JPanel

{
	
	public void paintComponent( Graphics g )
	{
		
		
		super.paintComponent( g );
		
		int width = getWidth();
		
		int height =  getHeight();
		
		g.drawLine(0 ,0 , width, heigth);
		
		g.drawLine(0 , width, heigth, 0);
	}

}
aeciovc

vc tá usando alguma IDE?? Eclipse, NetBeans, JBuilder!

porque esses erros um ctrl + espaço resolve pra vc que programa no Visual Studio, e isso de arrastar e soltar as IDe’s tbm têm, usando Swing!

ViniGodoy

É só ler as mensagens de erro e corrigir nas linhas que ele indica. Ainda tem problemas com escrita do heigth errado. o getSize() está sem o s maiúsculo… tem que prestar bem atenção, senão não funciona mesmo.

D

aeciovc:
vc tá usando alguma IDE?? Eclipse, NetBeans, JBuilder!

porque esses erros um ctrl + espaço resolve pra vc que programa no Visual Studio, e isso de arrastar e soltar as IDe’s tbm têm, usando Swing!

Eu estou usando o eclipse só que não sei resolver nada.

Eu não sei. As vezes eu uso crt + espaço e não aparece nada e as vezes muitas opções ai confunde.

No Visual Studio era só arrastar e ele mesmo montava o código.

D

Eu estou tentando 2 horas só hoje, ondem foi mais um tempo e não consigo mudar nada, isto esta destruindo minha paciência.

O eclipse não avisa qual é o erro.

Eu estou seguindo exatamente igual o descrito no livro mais não intendo.

Eu mesmo conseguindo anular a maioria dos erros, eles ainda tem muitos e não intendo nada.

Java é difícil mesmo, mexo com java a três dias estudando e nem consigo criar uma misera interface.

package a001;
import javax.swing.JPanel;
import java.awt.Graphics;



public interface DrawPanel extends JPanel // "JPanel " por que ele não reconhece, copiei igual o livro?

{
	
	public void paintComponent( Graphics g ) // Por que fica riscado "paintComponent( Graphics g )" e ele diz que a única solução é anular todo o trexo
	{
		
		
		super.paintComponent( g );
		
		int width = getWidth();
		
		int heigth =  getHeight();
		
		g.drawLine(0 ,0 , width, heigth);
		
		g.drawLine(0 , width, heigth, 0);
	}

}
package a001;
import java.awt.Component;

import javax.swing.JFrame;


public class test001 {
	
	public static Component panel;
	public static DrawPanel DrawPanel;

	public static void main (String args[]){
		
		DrawPanel = new DrawPanel(); //"DrawPanel" por que não este erro?
		
		JFrame application = new JFrame();
		
		application.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
		
		application.add( panel );
		application.setSize( 250,250 );
		application.setVisible( true );
		
		
		
		
		
		
	}

}

Me esforcei muito para acabar com erros, mais não consegui em 3 deles.

thiagobernardo_si

Se vc estiver usando o eclipse, praticamente ele já diz onde voce esta fazendo coisa errada…
Agora você tem que prestar atenção na digitação e saber o que vc esta usando…

como ja é de default baixa as apostilas da caelum que la tem algumas dicas sobre eclipse…

flw abs…

D

Eu fiz o que pude mesmo.

Mais tem 3 erros que não consigo acabar de jeito nenhum.

Java é mesmo difícil, em 3 dias estudando eu não consigo nem uma interface.

E isto que estou me esforçando muito.

ViniGodoy

Mas que erros são esses? Geralmente os erros indicam a linha do problema!

D

Realmente esqueci de mostrar.

São os que coloquei comentário:

package a001;
import javax.swing.JPanel;
import java.awt.Graphics;



public interface DrawPanel extends JPanel // Este JPanel, eu segui as instruções do livro e da erro, por que?

{
	
	public void paintComponent( Graphics g ) //por que este erro?
	{
		
		
		super.paintComponent( g );
		
		int width = getWidth();
		
		int heigth =  getHeight();
		
		g.drawLine(0 ,0 , width, heigth);
		
		g.drawLine(0 , width, heigth, 0);
	}

}
package a001;
import java.awt.Component;

import javax.swing.JFrame;


public class test001 {
	
	public static Component panel;
	public static DrawPanel DrawPanel;

	public static void main (String args[]){
		
		DrawPanel = new DrawPanel();
		
		JFrame application = new JFrame();
		
		application.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
		
		application.add( panel );
		application.setSize( 250,250 );
		application.setVisible( true );
		
		
		
		
		
		
	}

}
package a001;
import java.awt.Component;

import javax.swing.JFrame;


public class test001 {
	
	public static Component panel;
	public static DrawPanel DrawPanel;

	public static void main (String args[]){
		
		DrawPanel = new DrawPanel(); // Este é outro erro.
		
		JFrame application = new JFrame();
		
		application.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
		
		application.add( panel );
		application.setSize( 250,250 );
		application.setVisible( true );
		
		
		
		
		
		
	}

}

Agreadeço a atenção, só que esta difícil.

2 Dias de tentativa e nada.

Eu teria de colocar algum plugin porque só tenho o básico do eclipse???/

thiagobernardo_si

não é assim?

Cara aqui tem um exemplo semelhante ao seu http://www.java2s.com/Code/JavaAPI/javax.swing/extendsJPanel.htm

flw abs…

D

thiagobernardo_si:

não é assim?

Cara aqui tem um exemplo semelhante ao seu http://www.java2s.com/Code/JavaAPI/javax.swing/extendsJPanel.htm

flw abs…

Detesto desapontar, mais continua com o erro.

thiagobernardo_si

Cara você tem certeza que DrawPane é uma interface?

Se você alterar para class irá funcionar corretamente…

D

thiagobernardo_si:

Cara você tem certeza que DrawPane é uma interface?

Se você alterar para class irá funcionar corretamente…

Como assim alterar para class?

Alterar o que?

Desculpa, mais não tem 3 dias que estudo java

renamed
package a001;
import javax.swing.JPanel;
import java.awt.Graphics;



public interface DrawPanel extends JPanel // Este JPanel, eu segui as instruções do livro e da erro, por que?

{
	
	public void paintComponent( Graphics g ) //por que este erro?
	{
		
		
		super.paintComponent( g );
		
		int width = getWidth();
		
		int heigth =  getHeight();
		
		g.drawLine(0 ,0 , width, heigth);
		
		g.drawLine(0 , width, heigth, 0);
	}

}

Uma interface não pode contar implementação de método, apenas sua assinatura. Em vez de interface crie uma classe.

package a001;
import javax.swing.JPanel;
import java.awt.Graphics;



public class DrawPanel extends JPanel // Este JPanel, eu segui as instruções do livro e da erro, por que?

{
	
	public void paintComponent( Graphics g ) //por que este erro?
	{
		
		
		super.paintComponent( g );
		
		int width = getWidth();
		
		int heigth =  getHeight();
		
		g.drawLine(0 ,0 , width, heigth);
		
		g.drawLine(0 , width, heigth, 0);
	}

}

ok?

thiagobernardo_si

Eclipse: The type JPanel cannot be a superinterface of DrawPanel; a superinterface must be an interface

JPanel é uma classe que extende JComponent que implementa Accessible

Uma interface não vai extender uma classe.

se você colocar da seguinte forma irá funcionar

flw…

dm_thiago

DarthVictor:
thiagobernardo_si:

Cara você tem certeza que DrawPane é uma interface?

Se você alterar para class irá funcionar corretamente…

Como assim alterar para class?

Alterar o que?

Desculpa, mais não tem 3 dias que estudo java

interface não é interface com o usuário, é outra coisa. Onde está:

deveria ser:

porque você está criando uma classe que é filha de outra (JPanel), e não uma interface.

D
dm_thiago:
DarthVictor:
thiagobernardo_si:
Cara você tem certeza que DrawPane é uma interface?

Se você alterar para class irá funcionar corretamente...

Como assim alterar para class?

Alterar o que?

Desculpa, mais não tem 3 dias que estudo java

interface não é interface com o usuário, é outra coisa. Onde está:

public interface DrawPanel extends JPanel

deveria ser:

public class DrawPanel extends JPanel

porque você está criando uma classe que é filha de outra (JPanel), e não uma interface.

renamed:
package a001;
import javax.swing.JPanel;
import java.awt.Graphics;



public interface DrawPanel extends JPanel // Este JPanel, eu segui as instruções do livro e da erro, por que?

{
	
	public void paintComponent( Graphics g ) //por que este erro?
	{
		
		
		super.paintComponent( g );
		
		int width = getWidth();
		
		int heigth =  getHeight();
		
		g.drawLine(0 ,0 , width, heigth);
		
		g.drawLine(0 , width, heigth, 0);
	}

}

Uma interface não pode contar implementação de método, apenas sua assinatura. Em vez de interface crie uma classe.

package a001;
import javax.swing.JPanel;
import java.awt.Graphics;



public class DrawPanel extends JPanel // Este JPanel, eu segui as instruções do livro e da erro, por que?

{
	
	public void paintComponent( Graphics g ) //por que este erro?
	{
		
		
		super.paintComponent( g );
		
		int width = getWidth();
		
		int heigth =  getHeight();
		
		g.drawLine(0 ,0 , width, heigth);
		
		g.drawLine(0 , width, heigth, 0);
	}

}

ok?

thiagobernardo_si:

Eclipse: The type JPanel cannot be a superinterface of DrawPanel; a superinterface must be an interface

JPanel é uma classe que extende JComponent que implementa Accessible

Uma interface não vai extender uma classe.

public interface DrawPanel extends JPanel

se você colocar da seguinte forma irá funcionar

public class DrawPanel extends JPanel

flw...

Obrigado, agora intendi.

thiagobernardo_si

dm_thiago eu sei que nao é interface com usuário, mas foi isso que eu quis dizer… hehe

e qlqr forma… resolvido… flw abs… bons estudos…

Criado 26 de abril de 2010
Ultima resposta 26 de abr. de 2010
Respostas 19
Participantes 6