Galera, fiz 2 programas em arquivos diferentes.
O “MenuComFrame” é um teste que eu tava fazendo com o JMenu que o unico botão que funciona é o item “Desenho livre”.
O “DesenhoLivre” um JFrame que desenha de acordo com a posição do mouse.
Queria integrar esse “DesenhoLivre” no resto do frame que sobrou do “MenuComFrame”, porém n tenho conhecimento de como fazer isso, já tentei de diversas formas e não consigo.
MenuComFrame
import javax.swing.;
import java.awt.;
import java.awt.event.*;
public class MenuComFrame extends JFrame{
//Instancia a barra de menu e os itens
JMenuBar barra = new JMenuBar();
JFrame areadesenho = new JFrame();
JMenu menuArquivo = new JMenu(“Arquivo”);
JMenuItem novo = new JMenuItem(“Novo”);
JMenuItem abrir = new JMenuItem(“Abrir”);
JMenuItem fechar = new JMenuItem(“Fechar”);
JMenu menuFerramentas = new JMenu(“Ferramentas”);
JMenuItem linha = new JMenuItem(“Linha reta”);
JMenuItem quadrado = new JMenuItem(“Quadrado”);
JMenuItem triangulo = new JMenuItem(“Triângulo Retângulo”);
JMenuItem livre = new JMenuItem(“Desenho Livre”);
JMenuItem freeman = new JMenuItem(“Desenhar por Freeman Chain”);
JMenu menuSobre = new JMenu(“Sobre”);
JMenu menuSair = new JMenu(“Sair”);
JMenuItem exit = new JMenuItem(“Exit”);
public MenuComFrame(){
//coloca a barra de menu e os itens
setJMenuBar(barra);
areadesenho.setTitle("");
areadesenho.setSize(500,500);
areadesenho.setVisible(false);
areadesenho.setLocationRelativeTo(null);
barra.add(menuArquivo);
menuArquivo.add(novo);
menuArquivo.add(abrir);
menuArquivo.add(fechar);
barra.add(menuFerramentas);
menuFerramentas.add(linha);
menuFerramentas.add(quadrado);
menuFerramentas.add(triangulo);
menuFerramentas.add(livre);
menuFerramentas.add(freeman);
barra.add(menuSobre);
//menuSobre.add();
barra.add(menuSair);
menuSair.add(exit);
//dando ação aos itens
fechar.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
setVisible(false);
new MenuInicial();
}
});
exit.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
System.exit(0);
}
});
livre.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
new DesenhoLivre();
}
});
setTitle("MiniCad");
setExtendedState(MAXIMIZED_BOTH);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
}
public static void main(String[] args){
new MenuComFrame();
}
}
==========================================================================
DesenhoLivre
import javax.swing.JFrame;
import java.util.ArrayList;
import java.awt.Point;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
public class DesenhoLivre extends JFrame{
boolean pressionado = false;
public DesenhoLivre(){
//“escuta” o que o mouse faz enquanto executa o programa em sí
addMouseListener(new MouseListener(){
public void mouseReleased(MouseEvent e){
pressionado = false;
}
public void mousePressed(MouseEvent e){
pressionado = true;
listadecoord.clear();
}
public void mouseExited(MouseEvent e){
}
public void mouseEntered(MouseEvent e){
}
public void mouseClicked(MouseEvent e){
}
});
//instancia o objeto time
new Time().start();
//seta a configuração inicial do frame
setExtendedState(MAXIMIZED_BOTH);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
}
//Lista de coordenadas gravadas para execução do desenho livre
ArrayList listadecoord = new ArrayList<>();
public class Desenho{
int x, y;
public Desenho(int x, int y){
this.y = y;
this.x = x;
}
}
//desenha uma linha da coordenada x,y para a coordenada x2,y2
public void paint(Graphics g){
for(int i=1; i<listadecoord.size();i++){
int x = listadecoord.get(i).x;
int y = listadecoord.get(i).y;
int x2 = listadecoord.get(i-1).x;
int y2 = listadecoord.get(i-1).y;
g.drawLine(x2,y2,x,y);
}
}
//principal ======================================
public static void main(String[]args)
{
new DesenhoLivre();
}