Aplicação grafica erro

5 respostas
L

Ola pessoal. Hoje a noite estava tentando escrever um programa que exibe uma janela e nessa janela ele vai desenhar duas linhas de ponta a ponta. Porem o programa abre normalmente mas não aparece nenhuma linha. Quando ele abre fica assim:
erro

e era para ficar assim:
certo

meu código fonte esta da seguinte maneira:

package firstGraphicApplication;

import javax.swing.JFrame;

public class Painel {

public static void main (String [] args) {
		// cria um painel que contém nosso desenho
			DrawPanel painel = new DrawPanel ();
		
		// cria um novo quadro para armazenar o painel
		JFrame application = new JFrame ();
		
		// configura o frame para ser encerrado quando ele é fechado
		application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		application.add(painel);// adiciona o painel ao frame
		application.setSize(250,250);// configura o tamanho do frame
		application.setVisible(true);// torna o frame visível
	}

}

Classe DrawPanel:

package firstGraphicApplication;

import java.awt.Graphics;

import javax.swing.JPanel;

public class DrawPanel extends JPanel {

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

}

alguém pode me ajudar ?

5 Respostas

staroski

Você precisa estudar os gerenciadores de layout.
O layout inicial do content pane de um JFrame é o BorderLayout.

Adicione o seu JPanel dessa forma:

application.add(painel, BorderLayout.CENTER);

No seu DrawPanel você criou um método Grafico que não é chamado por ninguém.

Você tem que sobrescrever o método paintComponent(Graphics) para poder desenhar no seu componente.

L

Muito obrigado por sua ajuda. Poderia me indicar artigos ou livros que explicam sobre parte gráfica no Java?

L

Fui testar essas alterações no código porém continua não dando certo :confused:

staroski

Posta as alterações que fez.

Pois se você fez as alterações abaixo:

Tela principal:

import java.awt.BorderLayout;

import javax.swing.JFrame;

public class Painel {

    public static void main(String[] args) {
        // cria um painel que contém nosso desenho
        DrawPanel painel = new DrawPanel();

        // cria um novo quadro para armazenar o painel
        JFrame application = new JFrame();

        // configura o frame para ser encerrado quando ele é fechado
        application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        application.add(painel, BorderLayout.CENTER);// adiciona o painel ao frame
        application.setSize(250, 250);// configura o tamanho do frame
        application.setVisible(true);// torna o frame visível
    }
}

Classe onde ocorre o desenho:

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

public class DrawPanel extends JPanel {

    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);

        int width = getWidth();
        int height = getHeight();

        g.drawLine(0, 0, width, height);
        g.drawLine(0, height, width, 0);
    }
}

Então a saída será essa:

exemplo

L

agora foi :sweat_smile: obrigado por sua ajuda

Criado 27 de julho de 2020
Ultima resposta 27 de jul. de 2020
Respostas 5
Participantes 2