[RESOLVIDO]Como aprender a criar interfaces?

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?

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.

[quote=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.

[/quote]

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);
	}

}

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!

É 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.

[quote=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![/quote]

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.

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.

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…

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.

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

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???/

não é assim?

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

flw abs…

[quote=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…[/quote]

Detesto desapontar, mais continua com o erro.

Cara você tem certeza que DrawPane é uma interface?

Se você alterar para class irá funcionar corretamente…

[quote=thiagobernardo_si]
Cara você tem certeza que DrawPane é uma interface?

Se você alterar para class irá funcionar corretamente…[/quote]

Como assim alterar para class?

Alterar o que?

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

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?

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…

[quote=DarthVictor][quote=thiagobernardo_si]
Cara você tem certeza que DrawPane é uma interface?

Se você alterar para class irá funcionar corretamente…[/quote]

Como assim alterar para class?

Alterar o que?

Desculpa, mais não tem 3 dias que estudo java [/quote]

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.

[quote=dm_thiago][quote=DarthVictor][quote=thiagobernardo_si]
Cara você tem certeza que DrawPane é uma interface?

Se você alterar para class irá funcionar corretamente…[/quote]

Como assim alterar para class?

Alterar o que?

Desculpa, mais não tem 3 dias que estudo java [/quote]

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.[/quote]

[quote=renamed][code]
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);
}

}

[/code]

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?[/quote]

Obrigado, agora intendi.

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…