Mapear imagem para clicar com evento

5 respostas Resolvido
java
Arms_Full

A intentesão é fazer um simulador e abaixo a imagem mostra as areas em amarelo a serem mapeadas
Bay

qualquer ajuda é valida.
Agradeço

5 Respostas

staroski

Primeiramente eu iria modelar as classes para representar o circuito.
Os componentes seriam vértices e as ligações seriam as arestas de um grafo.
Depois é que eu me preocuparia em como criar um componente para renderizar o circuito de forma gráfica.

Arms_Full

Beleza meu caro staroski, vou seguir seu raciocínio, pois meu conhecimento com java é básico, por isso da ajuda, já iniciei a modelagem das classes e, a cada evolução do processo irei postando para obter um feedback, grato.

Arms_Full

Atualizando,
Nesta classe, utilizando JLabel inseri plano de fundo e abertura e fechamento do disjuntor funcionou.

package fullSe;

import java.awt.event.MouseEvent;

import java.awt.event.MouseListener;

import javax.swing.ImageIcon;

import javax.swing.JFrame;

import javax.swing.JLabel;

import fullSe.Chave;

public class FixSee extends JFrame{

private static final MouseListener MouseListener = null;
    ImageIcon iconSub     = new ImageIcon(getClass().getResource("MPD2.jpg"));
ImageIcon iconBay     = new ImageIcon(getClass().getResource("disjuntor.png"));
ImageIcon iconAberto  = new ImageIcon(getClass().getResource("chave3.png"));
     
JLabel l = new JLabel (iconBay);
    JLabel a = new JLabel (iconSub);
    
public FixSee() {
	
	editarJanela();
  		 l.setBounds(336, 260, 34, 40);
             a.setBounds(0, 0 ,708, 483);
     l.addMouseListener (new MouseListener() {
     
             @Override
     public void mouseClicked(MouseEvent e) {

    	 l.setIcon(iconAberto);
      
          }
            @Override
	public void mousePressed(MouseEvent e) {
		
		 l.setIcon(iconBay);
          }
	@Override
	public void mouseReleased(MouseEvent e) {
	
	}
	@Override
	public void mouseEntered(MouseEvent e) {
	}
	@Override
	public void mouseExited(MouseEvent e) {
     }
});

}

private void editarJanela() {

setDefaultCloseOperation(EXIT_ON_CLOSE);

setSize(708, 483);

setLocationRelativeTo(null);

setVisible(true);

setLayout(null);

add(l);

add(a);
}

public static void main(String[] args) {
	new FixSee();
        }

}

Nesta outra abaixo tentei as ações de abrir e fechar chaves aí nem teve ação, o disjuntor também congelou.

package fullSe;
import java.awt.event.MouseEvent;

import java.awt.event.MouseListener;

import javax.swing.ImageIcon;

import javax.swing.JFrame;

import javax.swing.JLabel;

public class Chave extends FixSee{

ImageIcon iconCabt  = new ImageIcon(getClass().getResource("chave1.png"));
    ImageIcon iconCfed  = new ImageIcon(getClass().getResource("chaveFech2.png"));
    	
JLabel b = new JLabel (iconCfed);

    public Chave() {
        
       add(b);
    
    b.setBounds(333, 160, 40, 50);
          
    b.addMouseListener (new MouseListener() {

        @Override
        public void mouseClicked(MouseEvent e) {
            b.setIcon(iconCabt);
        }

        @Override
        public void mousePressed(MouseEvent e) {
             b.setIcon(iconCabt);
       }
        @Override
        public void mouseReleased(MouseEvent e) {
         }
        @Override
        public void mouseEntered(MouseEvent e) {
        }
        @Override
        public void mouseExited(MouseEvent e) {
        
        }
      });

}
}

Separei as classes entendendo que daria para acionar os comando sem duplicidade do MouseListener , mas não deu certo, tentei realizar ajustes mas permaneceu no mesmo status, pode checar estas condições?
Grato

Arms_Full

Pessoal encontrei um modo mais prático, quem pode me ajudar em como abrir, um DOC html interno pelo próprio diretório do programa, o que eu encontrei foi só, que abre externamente não serve. Grato.

Arms_Full
Solucao aceita

Oi pessoal resolvi minha situação utilizando webview e fiquei satisfeito, o tempo de trabalho foi menor
Abraço a todos.

Criado 17 de novembro de 2018
Ultima resposta 16 de dez. de 2018
Respostas 5
Participantes 2