Foro sobre Java SE > ¿Como añadir eventos independientes a componentes creados en tiempo de ejecución?
Sería necesario ver el código completo, para poder hacer algunas pruebas.
De todos modos, tal vez te interese ver:
http://tips4java.wordpress.com/2009/06/14/moving-windows/
sere sincero me costo leer tu codigo y hay cosas que no entendiendo mucho.
pero segun lo que dices tu método se queda con referencia al ultimo panel cosa que es obvia por esto
JPM=new JPanel();
JPM.setName("Panel"+this.clicks);
this.jPanel11.add(JPM);
mcontrols.put(ky, JPM);
JPM.addMouseListener(new java.awt.event.MouseAdapter(){
@Override
public void mousePressed(java.awt.event.MouseEvent e){
JPMMousePressed(JPM,e);
}
});
mira yo he echo uno antes y lo que hago asi, es similar al tuyo, solo que yo uso una variable llamada aux, para guardar el componente que se localizo en el metodo press
y ya en dragg lo muevo,
@Override
public void mousePressed(MouseEvent e) {
aux= this.getComponentAt(e.getPoint());
}
public void mouseDragged(MouseEvent e) {
if(aux!=null){
aux.setLocation(e.getX(), e.getY());
}
}
el listener solo lo tengo en el panel principal y solo agrego los paneles.
seria bueno que nos dejaras ver todo tu codigo para darte una mejor ayuda.
Buenas noches, Gracias por ver mi caso, en respuesta a que se me pidió que pusiera el código más completo aquí lo agrego:
package doungeonsanddragons1;
import javax.swing.*;
import java.awt.*;
import java.util.Map; //importado por pruebas en ejemplos en la web
import java.util.HashMap;//importado por pruebas en ejemplos en la web
import java.util.Iterator;//importado por pruebas en ejemplos en la web
/**
*
* @author Capobugbler
*/
public class DND extends javax.swing.JFrame {
private int npanel=0,clicks=0;
private Point PP=new Point();
private JPanel JPM;
private Map mcontrols = new HashMap();
private String txtTa1,nombreComp,Key,ky;
//private JScrollPane JSCP;
/** Creates new form DND */
public DND() {
initComponents();
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jTabbedPane1 = new javax.swing.JTabbedPane();
jPanel1 = new javax.swing.JPanel();
jPanel5 = new javax.swing.JPanel();
jLabel3 = new javax.swing.JLabel();
jScrollPane1 = new javax.swing.JScrollPane();
jTable1 = new javax.swing.JTable();
jScrollPane2 = new javax.swing.JScrollPane();
jTable2 = new javax.swing.JTable();
jButton5 = new javax.swing.JButton();
jPanel6 = new javax.swing.JPanel();
jComboBox1 = new javax.swing.JComboBox();
jButton1 = new javax.swing.JButton();
jLabel2 = new javax.swing.JLabel();
jLabel1 = new javax.swing.JLabel();
jPanel2 = new javax.swing.JPanel();
jPanel7 = new javax.swing.JPanel();
jLabel4 = new javax.swing.JLabel();
jProgressBar1 = new javax.swing.JProgressBar();
jLabel5 = new javax.swing.JLabel();
jButton2 = new javax.swing.JButton();
jButton3 = new javax.swing.JButton();
jPanel10 = new javax.swing.JPanel();
jLabel21 = new javax.swing.JLabel();
jProgressBar2 = new javax.swing.JProgressBar();
jButton7 = new javax.swing.JButton();
jButton8 = new javax.swing.JButton();
jButton9 = new javax.swing.JButton();
jLabel23 = new javax.swing.JLabel();
jLabel24 = new javax.swing.JLabel();
jButton6 = new javax.swing.JButton();
jPanel11 = new javax.swing.JPanel();
jLabel22 = new javax.swing.JLabel();
jScrollPane3 = new javax.swing.JScrollPane();
JTA1 = new javax.swing.JTextArea();
jDesktopPane1 = new javax.swing.JDesktopPane();
JBTAF = new javax.swing.JButton();
jPanel3 = new javax.swing.JPanel();
try {
jPanel8 =(javax.swing.JPanel)java.beans.Beans.instantiate(getClass().getClassLoader(), "doungeonsanddragons1.DND_jPanel8");
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (java.io.IOException e) {
e.printStackTrace();
}
jLabel6 = new javax.swing.JLabel();
jLabel7 = new javax.swing.JLabel();
jLabel8 = new javax.swing.JLabel();
jLabel9 = new javax.swing.JLabel();
jLabel10 = new javax.swing.JLabel();
jLabel11 = new javax.swing.JLabel();
jLabel12 = new javax.swing.JLabel();
jLabel13 = new javax.swing.JLabel();
jLabel14 = new javax.swing.JLabel();
jLabel15 = new javax.swing.JLabel();
jTextField1 = new javax.swing.JTextField();
jTextField2 = new javax.swing.JTextField();
jTextField3 = new javax.swing.JTextField();
jTextField4 = new javax.swing.JTextField();
jTextField6 = new javax.swing.JTextField();
jTextField5 = new javax.swing.JTextField();
jLabel16 = new javax.swing.JLabel();
jLabel17 = new javax.swing.JLabel();
jLabel18 = new javax.swing.JLabel();
jLabel19 = new javax.swing.JLabel();
jComboBox2 = new javax.swing.JComboBox();
jComboBox3 = new javax.swing.JComboBox();
jTextField7 = new javax.swing.JTextField();
jTextField8 = new javax.swing.JTextField();
jTextField9 = new javax.swing.JTextField();
jTextField10 = new javax.swing.JTextField();
jComboBox4 = new javax.swing.JComboBox();
jComboBox5 = new javax.swing.JComboBox();
jLabel20 = new javax.swing.JLabel();
jButton4 = new javax.swing.JButton();
jPanel9 = new javax.swing.JPanel();
jPanel4 = new javax.swing.JPanel();
jMenuBar1 = new javax.swing.JMenuBar();
jMenu1 = new javax.swing.JMenu();
jMenu2 = new javax.swing.JMenu();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle("Doungeons And Dragons Aventure Manager V1.0");
setBounds(new java.awt.Rectangle(0, 0, 681, 457));
setFont(new java.awt.Font("Lucida Blackletter", 1, 14));
setForeground(new java.awt.Color(0, 51, 255));
setResizable(false);
getContentPane().setLayout(null);
jTabbedPane1.setMaximumSize(new java.awt.Dimension(681, 457));
jPanel1.setAutoscrolls(true);
jPanel1.setLayout(null);
jPanel5.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
jPanel5.setLayout(null);
jLabel3.setIcon(new javax.swing.ImageIcon(getClass().getResource("/doungeonsanddragons1/Imágenes/IWD_01_f70x70.png"))); // NOI18N
jPanel5.add(jLabel3);
jLabel3.setBounds(10, 20, 70, 70);
jTable1.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{null, null, null, null, null, null, null, null}
},
new String [] {
"N.Jugador", "N.Personaje", "Clase", "Raza", "Alin", "AC", "HP", "Lvl"
}
) {
Class[] types = new Class [] {
java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.Integer.class, java.lang.Integer.class, java.lang.Integer.class
};
public Class getColumnClass(int columnIndex) {
return types [columnIndex];
}
});
jTable1.setColumnSelectionAllowed(true);
jTable1.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
jScrollPane1.setViewportView(jTable1);
jPanel5.add(jScrollPane1);
jScrollPane1.setBounds(90, 10, 560, 40);
jTable2.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{null, null, null, null, null}
},
new String [] {
"P.Tot", "Tipo Peso", "Deidad", "Dinero", "Estado"
}
) {
Class[] types = new Class [] {
java.lang.Integer.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class
};
public Class getColumnClass(int columnIndex) {
return types [columnIndex];
}
});
jScrollPane2.setViewportView(jTable2);
jPanel5.add(jScrollPane2);
jScrollPane2.setBounds(90, 60, 560, 40);
jButton5.setText("BakPak");
jPanel5.add(jButton5);
jButton5.setBounds(655, 10, 70, 90);
jPanel1.add(jPanel5);
jPanel5.setBounds(10, 70, 730, 110);
jPanel6.setBorder(javax.swing.BorderFactory.createEtchedBorder());
jPanel6.setLayout(null);
jPanel6.add(jComboBox1);
jComboBox1.setBounds(50, 20, 120, 22);
jButton1.setFont(new java.awt.Font("Courier New", 0, 11));
jButton1.setIcon(new javax.swing.ImageIcon("C:\\Recursos\\iconos\\IC0N3xp3ri3nc3-X\\Icon Experience\\Iconexperience - Objects And People\\32x32\\shadow\\pawn_delete.png")); // NOI18N
jButton1.setBorder(javax.swing.BorderFactory.createEtchedBorder());
jButton1.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);
jButton1.setLabel("Borrar Personaje");
jPanel6.add(jButton1);
jButton1.setBounds(180, 10, 170, 40);
jLabel2.setIcon(new javax.swing.ImageIcon(getClass().getResource("/doungeonsanddragons1/Imágenes/pawn_add.png"))); // NOI18N
jPanel6.add(jLabel2);
jLabel2.setBounds(10, 10, 32, 40);
jLabel1.setFont(new java.awt.Font("Courier New", 0, 11));
jLabel1.setText("Añadir Personaje");
jPanel6.add(jLabel1);
jLabel1.setBounds(50, 4, 120, 20);
jPanel1.add(jPanel6);
jPanel6.setBounds(0, 0, 360, 60);
jTabbedPane1.addTab("Contról Personajes", jPanel1);
jPanel7.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
jLabel4.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabel4.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
jLabel4.setPreferredSize(new java.awt.Dimension(70, 70));
jLabel5.setText("|-HP-----------------------------------------------0-|");
jButton2.setText("Daño");
jButton3.setText("Salud");
javax.swing.GroupLayout jPanel7Layout = new javax.swing.GroupLayout(jPanel7);
jPanel7.setLayout(jPanel7Layout);
jPanel7Layout.setHorizontalGroup(
jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel7Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jLabel4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(jLabel5, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jProgressBar1, javax.swing.GroupLayout.DEFAULT_SIZE, 190, Short.MAX_VALUE)
.addGroup(jPanel7Layout.createSequentialGroup()
.addComponent(jButton2)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jButton3)))
.addContainerGap())
);
jPanel7Layout.setVerticalGroup(
jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel7Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel7Layout.createSequentialGroup()
.addComponent(jLabel5, javax.swing.GroupLayout.PREFERRED_SIZE, 14, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jProgressBar1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jButton2)
.addComponent(jButton3)))
.addComponent(jLabel4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap(102, Short.MAX_VALUE))
);
jPanel10.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
jPanel10.setPreferredSize(new java.awt.Dimension(200, 164));
jLabel21.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
jLabel21.setPreferredSize(new java.awt.Dimension(80, 80));
jButton7.setText("D");
jButton8.setText("V");
jButton9.setText("R");
jLabel23.setText("HPT=");
jLabel23.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
jLabel24.setText("HP=");
jLabel24.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
javax.swing.GroupLayout jPanel10Layout = new javax.swing.GroupLayout(jPanel10);
jPanel10.setLayout(jPanel10Layout);
jPanel10Layout.setHorizontalGroup(
jPanel10Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel10Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel10Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
.addComponent(jProgressBar2, javax.swing.GroupLayout.Alignment.LEADING, 0, 0, Short.MAX_VALUE)
.addGroup(javax.swing.GroupLayout.Alignment.LEADING, jPanel10Layout.createSequentialGroup()
.addGroup(jPanel10Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel23, javax.swing.GroupLayout.DEFAULT_SIZE, 80, Short.MAX_VALUE)
.addComponent(jLabel21, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel10Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(jLabel24, javax.swing.GroupLayout.DEFAULT_SIZE, 63, Short.MAX_VALUE)
.addComponent(jButton7, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jButton9, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jButton8, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
jPanel10Layout.setVerticalGroup(
jPanel10Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel10Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jProgressBar2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel10Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel23)
.addComponent(jLabel24))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel10Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel10Layout.createSequentialGroup()
.addComponent(jButton7)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jButton9)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jButton8))
.addComponent(jLabel21, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
jButton6.setText("Añadir");
jButton6.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
jButton6MouseClicked(evt);
}
});
jPanel11.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
jPanel11.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseEntered(java.awt.event.MouseEvent evt) {
jPanel11MouseEntered(evt);
}
public void mouseExited(java.awt.event.MouseEvent evt) {
jPanel11MouseExited(evt);
}
});
jPanel11.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
public void mouseMoved(java.awt.event.MouseEvent evt) {
jPanel11MouseMoved(evt);
}
});
javax.swing.GroupLayout jPanel11Layout = new javax.swing.GroupLayout(jPanel11);
jPanel11.setLayout(jPanel11Layout);
jPanel11Layout.setHorizontalGroup(
jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 290, Short.MAX_VALUE)
);
jPanel11Layout.setVerticalGroup(
jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 321, Short.MAX_VALUE)
);
jLabel22.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
jScrollPane3.setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
JTA1.setColumns(20);
JTA1.setLineWrap(true);
JTA1.setRows(5);
JTA1.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseEntered(java.awt.event.MouseEvent evt) {
JTA1MouseEntered(evt);
}
});
jScrollPane3.setViewportView(JTA1);
jDesktopPane1.setBackground(new java.awt.Color(204, 204, 204));
jDesktopPane1.setBorder(javax.swing.BorderFactory.createEtchedBorder());
JBTAF.setText("Añadir Frame");
JBTAF.setName("JBTAnadirFrame"); // NOI18N
JBTAF.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
JBTAFActionPerformed(evt);
}
});
javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
jPanel2.setLayout(jPanel2Layout);
jPanel2Layout.setHorizontalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jButton6)
.addGroup(jPanel2Layout.createSequentialGroup()
.addComponent(jPanel7, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel10, javax.swing.GroupLayout.PREFERRED_SIZE, 171, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel22, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addGroup(jPanel2Layout.createSequentialGroup()
.addComponent(jPanel11, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jScrollPane3, javax.swing.GroupLayout.DEFAULT_SIZE, 200, Short.MAX_VALUE)))
.addGap(45, 45, 45)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jDesktopPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 562, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(JBTAF))
.addContainerGap())
);
jPanel2Layout.setVerticalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jButton6)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addComponent(jDesktopPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 383, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(JBTAF))
.addGroup(jPanel2Layout.createSequentialGroup()
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel7, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(jPanel2Layout.createSequentialGroup()
.addComponent(jPanel10, javax.swing.GroupLayout.PREFERRED_SIZE, 149, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jLabel22, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jScrollPane3, javax.swing.GroupLayout.DEFAULT_SIZE, 323, Short.MAX_VALUE)
.addComponent(jPanel11, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))))
.addContainerGap())
);
jTabbedPane1.addTab("Contról Encuentros", jPanel2);
jPanel3.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());
jPanel8.setLayout(null);
jLabel6.setFont(new java.awt.Font("Courier New", 0, 11));
jLabel6.setText("Nombre Jugador:");
jPanel8.add(jLabel6);
jLabel6.setBounds(10, 20, 110, 14);
jLabel7.setFont(new java.awt.Font("Courier New", 0, 11));
jLabel7.setText("Nombre Personaje:");
jPanel8.add(jLabel7);
jLabel7.setBounds(10, 60, 120, 14);
jLabel8.setFont(new java.awt.Font("Courier New", 0, 11));
jLabel8.setText("Nivel:");
jPanel8.add(jLabel8);
jLabel8.setBounds(750, 20, 50, 14);
jLabel9.setFont(new java.awt.Font("Courier New", 0, 11));
jLabel9.setText("Tamaño:");
jPanel8.add(jLabel9);
jLabel9.setBounds(560, 60, 50, 14);
jLabel10.setFont(new java.awt.Font("Courier New", 0, 11));
jLabel10.setText("Deidad:");
jPanel8.add(jLabel10);
jLabel10.setBounds(450, 60, 70, 14);
jLabel11.setFont(new java.awt.Font("Courier New", 0, 11));
jLabel11.setText("Clase:");
jPanel8.add(jLabel11);
jLabel11.setBounds(230, 20, 60, 14);
jLabel12.setFont(new java.awt.Font("Courier New", 0, 11));
jLabel12.setText("Alineamiento:");
jPanel8.add(jLabel12);
jLabel12.setBounds(450, 20, 110, 14);
jLabel13.setFont(new java.awt.Font("Courier New", 0, 11));
jLabel13.setText("Edad:");
jPanel8.add(jLabel13);
jLabel13.setBounds(750, 60, 50, 14);
jLabel14.setFont(new java.awt.Font("Courier New", 0, 11));
jLabel14.setText("Weight:");
jPanel8.add(jLabel14);
jLabel14.setBounds(650, 60, 50, 14);
jLabel15.setFont(new java.awt.Font("Courier New", 0, 11));
jLabel15.setText("Raza:");
jPanel8.add(jLabel15);
jLabel15.setBounds(230, 60, 60, 14);
jTextField1.setFont(new java.awt.Font("Courier New", 0, 11));
jTextField1.setPreferredSize(jTextField4.getPreferredSize());
jPanel8.add(jTextField1);
jTextField1.setBounds(10, 80, 210, 20);
jTextField2.setFont(new java.awt.Font("Courier New", 0, 11));
jPanel8.add(jTextField2);
jTextField2.setBounds(450, 40, 100, 20);
jTextField3.setFont(new java.awt.Font("Courier New", 0, 11));
jPanel8.add(jTextField3);
jTextField3.setBounds(230, 80, 210, 20);
jTextField4.setFont(new java.awt.Font("Courier New", 0, 11));
jPanel8.add(jTextField4);
jTextField4.setBounds(10, 40, 210, 20);
jTextField6.setFont(new java.awt.Font("Courier New", 0, 11));
jPanel8.add(jTextField6);
jTextField6.setBounds(450, 80, 100, 20);
jTextField5.setFont(new java.awt.Font("Courier New", 0, 11));
jPanel8.add(jTextField5);
jTextField5.setBounds(230, 40, 210, 20);
jLabel16.setFont(new java.awt.Font("Courier New", 0, 11));
jLabel16.setText("Height:");
jPanel8.add(jLabel16);
jLabel16.setBounds(650, 20, 50, 14);
jLabel17.setFont(new java.awt.Font("Courier New", 0, 11));
jLabel17.setText("Genero:");
jPanel8.add(jLabel17);
jLabel17.setBounds(560, 20, 50, 14);
jLabel18.setFont(new java.awt.Font("Courier New", 0, 11));
jLabel18.setText("Ojos:");
jPanel8.add(jLabel18);
jLabel18.setBounds(820, 20, 50, 20);
jLabel19.setFont(new java.awt.Font("Courier New", 0, 11));
jLabel19.setText("Cabello:");
jPanel8.add(jLabel19);
jLabel19.setBounds(820, 60, 56, 14);
jComboBox2.setFont(new java.awt.Font("Courier New", 0, 11));
jComboBox2.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
jPanel8.add(jComboBox2);
jComboBox2.setBounds(560, 40, 80, 22);
jComboBox3.setFont(new java.awt.Font("Courier New", 0, 11));
jComboBox3.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
jPanel8.add(jComboBox3);
jComboBox3.setBounds(560, 80, 80, 22);
jTextField7.setFont(new java.awt.Font("Courier New", 0, 11));
jPanel8.add(jTextField7);
jTextField7.setBounds(820, 80, 80, 20);
jTextField8.setFont(new java.awt.Font("Courier New", 0, 11));
jPanel8.add(jTextField8);
jTextField8.setBounds(650, 80, 6, 20);
jTextField9.setFont(new java.awt.Font("Courier New", 0, 11));
jPanel8.add(jTextField9);
jTextField9.setBounds(650, 40, 6, 20);
jTextField10.setFont(new java.awt.Font("Courier New", 0, 11));
jPanel8.add(jTextField10);
jTextField10.setBounds(820, 40, 80, 20);
jComboBox4.setFont(new java.awt.Font("Courier New", 0, 11));
jComboBox4.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
jPanel8.add(jComboBox4);
jComboBox4.setBounds(750, 40, 68, 22);
jComboBox5.setFont(new java.awt.Font("Courier New", 0, 11));
jComboBox5.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
jPanel8.add(jComboBox5);
jComboBox5.setBounds(750, 80, 68, 22);
jLabel20.setBorder(javax.swing.BorderFactory.createEtchedBorder());
jLabel20.setMaximumSize(new java.awt.Dimension(70, 70));
jLabel20.setMinimumSize(new java.awt.Dimension(70, 70));
jLabel20.setPreferredSize(new java.awt.Dimension(70, 70));
jPanel8.add(jLabel20);
jLabel20.setBounds(1000, 30, 70, 70);
jButton4.setFont(new java.awt.Font("Courier New", 0, 11));
jButton4.setText("Imagen...");
jButton4.setBorder(javax.swing.BorderFactory.createEtchedBorder());
jButton4.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
jPanel8.add(jButton4);
jButton4.setBounds(910, 33, 67, 70);
jPanel3.add(jPanel8, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 0, 1120, 120));
jPanel9.setBorder(javax.swing.BorderFactory.createEtchedBorder());
javax.swing.GroupLayout jPanel9Layout = new javax.swing.GroupLayout(jPanel9);
jPanel9.setLayout(jPanel9Layout);
jPanel9Layout.setHorizontalGroup(
jPanel9Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 466, Short.MAX_VALUE)
);
jPanel9Layout.setVerticalGroup(
jPanel9Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 146, Short.MAX_VALUE)
);
jPanel3.add(jPanel9, new org.netbeans.lib.awtextra.AbsoluteConstraints(4, 124, 470, 150));
jTabbedPane1.addTab("Personajes", jPanel3);
jPanel4.setLayout(null);
jTabbedPane1.addTab("Enemigos", jPanel4);
getContentPane().add(jTabbedPane1);
jTabbedPane1.setBounds(0, 0, 1130, 590);
jMenu1.setText("File");
jMenuBar1.add(jMenu1);
jMenu2.setText("Edit");
jMenuBar1.add(jMenu2);
setJMenuBar(jMenuBar1);
java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
setBounds((screenSize.width-1140)/2, (screenSize.height-660)/2, 1140, 660);
}// </editor-fold>
private void jButton6MouseClicked(java.awt.event.MouseEvent evt) {
this.clicks+=1;
// ky="K"+clicks;
JPM=new JPanel();
JPM.setName("Panel"+this.clicks);
this.jPanel11.add(JPM);
// mcontrols.put(ky, JPM);
JPM.addMouseListener(new java.awt.event.MouseAdapter(){
@Override
public void mousePressed(java.awt.event.MouseEvent e){
JPMMousePressed(JPM,e);
}
});
JPM.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
//@Override
public void mouseDragged(java.awt.event.MouseEvent e){
JPMMouseDragged(e);
}
});
JPM.setBounds(50, 50, 50, 50);
JPM.setBorder(javax.swing.BorderFactory.createLineBorder(new Color(0,0,0)));// TODO add your handling code here:
this.validate();
}
private void jPanel11MouseMoved(java.awt.event.MouseEvent evt) {
Point P= evt.getPoint();
this.JTA1.setText("JPannel11 X: "+P.x+"JPannel11 Y: "+P.y);
// TODO add your handling code here:
}
private void JTA1MouseEntered(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
}
private void jPanel11MouseEntered(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
}
private void jPanel11MouseExited(java.awt.event.MouseEvent evt) {
// Component Components[]=this.jPanel11.getComponents();
// Este for es un intento por añadir lo eventos de forma generál, pero me di cuenta // que no funcionaría.
// for(int i=0;i<=this.jPanel11.getComponentCount();i++){
// Components[i].addMouseListener(new java.awt.event.MouseAdapter(){
// @Override
// public void mousePressed(java.awt.event.MouseEvent e){
// JPMMousePressed(e);
// }
// });
// Components[i].addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
//@Override
// public void mouseDragged(java.awt.event.MouseEvent e){
// JPMMouseDragged(e);
// }
// });
// }
// TODO add your handling code here:
}
private void JBTAFActionPerformed(java.awt.event.ActionEvent evt) {
// Este es otro intento de resolver el problema en general con un JDesktopPane
// y añadirle JinternalFrames pero caí en la cuenta de que de todas formas necesito
// resolver el problema para cualquier componente que añada.
this.clicks+=1;
String Fname="Personaje " + clicks;
JInternalFrame JIF= new JInternalFrame(Fname);
this.jDesktopPane1.add(JIF);
JIF.setBounds(50, 50, 100,100);
JIF.setVisible(true);
this.validate();
// TODO add your handling code here:
}
public void JPMMousePressed(Component C,java.awt.event.MouseEvent e){
//this.nombreComp=e.getComponent().getName();
// Este IF solo me sirvió para confirmar el problema de las fuentes de los eventos para
// este caso en particular
if(C.getName().equals(e.getComponent().getName())){
this.JTA1.setText("ES La fuente del evento!!!");
}else{
this.JTA1.setText("NO ES La fuente del evento!!!");
};
//this.txtTa1+=this.mcontrols.entrySet().toString()+"\r\n\r\n";
// this.JTA1.setText(txtTa1);
// if(this.mcontrols.containsValue("Panle1")){
// this.JTA1.setText("TRUE");
// }
//Iterator it=this.mcontrols.values().iterator();
//this.JTA1.setText(ky); //Lo del this si es la parte de capturar el punto para poder
// mover el componente.
this.PP.x=e.getX();
this.PP.y=e.getY();
//this.jLabel22.setText("X: "+e.getX()+" Y: "+e.getY());
}
public void JPMMouseDragged(java.awt.event.MouseEvent e){
//En este IF intentaba validar que la fuente del evento fuera donde estaba haciendo
//click, lo cual no me sirvió de mucho.
//if(e.getComponent().getName().equals(this.nombreComp)){
// Con lo que está dentro de este IF es con lo que muevo.
this.JPM.setLocation((int)(e.getX()+ this.JPM.getBounds().getX() - this.PP.getX()),(int)(e.getY()+ this.JPM.getBounds().getY() - this.PP.getY()));
//}
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new DND().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JButton JBTAF;
private javax.swing.JTextArea JTA1;
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton2;
private javax.swing.JButton jButton3;
private javax.swing.JButton jButton4;
private javax.swing.JButton jButton5;
private javax.swing.JButton jButton6;
private javax.swing.JButton jButton7;
private javax.swing.JButton jButton8;
private javax.swing.JButton jButton9;
private javax.swing.JComboBox jComboBox1;
private javax.swing.JComboBox jComboBox2;
private javax.swing.JComboBox jComboBox3;
private javax.swing.JComboBox jComboBox4;
private javax.swing.JComboBox jComboBox5;
private javax.swing.JDesktopPane jDesktopPane1;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel10;
private javax.swing.JLabel jLabel11;
private javax.swing.JLabel jLabel12;
private javax.swing.JLabel jLabel13;
private javax.swing.JLabel jLabel14;
private javax.swing.JLabel jLabel15;
private javax.swing.JLabel jLabel16;
private javax.swing.JLabel jLabel17;
private javax.swing.JLabel jLabel18;
private javax.swing.JLabel jLabel19;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel20;
private javax.swing.JLabel jLabel21;
private javax.swing.JLabel jLabel22;
private javax.swing.JLabel jLabel23;
private javax.swing.JLabel jLabel24;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel6;
private javax.swing.JLabel jLabel7;
private javax.swing.JLabel jLabel8;
private javax.swing.JLabel jLabel9;
private javax.swing.JMenu jMenu1;
private javax.swing.JMenu jMenu2;
private javax.swing.JMenuBar jMenuBar1;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel10;
private javax.swing.JPanel jPanel11;
private javax.swing.JPanel jPanel2;
private javax.swing.JPanel jPanel3;
private javax.swing.JPanel jPanel4;
private javax.swing.JPanel jPanel5;
private javax.swing.JPanel jPanel6;
private javax.swing.JPanel jPanel7;
private javax.swing.JPanel jPanel8;
private javax.swing.JPanel jPanel9;
private javax.swing.JProgressBar jProgressBar1;
private javax.swing.JProgressBar jProgressBar2;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JScrollPane jScrollPane3;
private javax.swing.JTabbedPane jTabbedPane1;
private javax.swing.JTable jTable1;
private javax.swing.JTable jTable2;
private javax.swing.JTextField jTextField1;
private javax.swing.JTextField jTextField10;
private javax.swing.JTextField jTextField2;
private javax.swing.JTextField jTextField3;
private javax.swing.JTextField jTextField4;
private javax.swing.JTextField jTextField5;
private javax.swing.JTextField jTextField6;
private javax.swing.JTextField jTextField7;
private javax.swing.JTextField jTextField8;
private javax.swing.JTextField jTextField9;
// End of variables declaration
}
Es en NetBeans 6.8, por lo general voy haciendo pruebas las cuales si no me sirven las pongo en comentarios pero éste es el código completo, ya estoy leyendo la página que me han enviado, y viendo el código del ComponentMover, y tambien probando con lo que me han sugerido con respecto a la variable aux, esto me resolverá para más proyectos que tengo con el mismo caso de problemas, Gracias de nueva cuenta,
No consigo compilarlo en NetBeans 7.2 a causa del AbsoluteLayout.
Es necesario el archivo .form para que pueda cargarse la librería correspondiente en el Matisse.
lamentablemente tu clase tiene muchas dependencias imagenes, un jpanel8 que cargas de no se donde, aunque pude resolver lo de absoluteLayout, y con un truco hacerlo arrancar solo me salio un jframe sin nada. si pudieras poner tu proyecto en algun lugar para poderlo descargar.
pero insisto que el problema es tu variable JMP, que aunque haces evento independientes esta variable guarda el ultimo panel añadido lo unico que tienes que hacer es que tus metodos utilicen el componente a mover. es lo que hago con la variable aux, que en el metodo press obtengo el component que esta presionado y ese es el que muevo
Hola lamento mucho no poder responder con la rapidez que quisiera, ahora que pude hacerme de tiempo probé lo que me has propuesto de la variable "aux", lo que sucede al colocar:
public void JPMMousePressed(Component C,java.awt.event.MouseEvent e){
aux=this.getComponentAt(e.getPoint());
this.PP.x=e.getX();
this.PP.y=e.getY();
}
public void JPMMouseDragged(java.awt.event.MouseEvent e){
//if(e.getComponent().getName().equals(this.nombreComp)){
if(aux!=null){
aux.setLocation(e.getX(), e.getY()); //Versión 1
//this.aux.setLocation((int)(e.getX()+ this.aux.getBounds().getX() - this.PP.getX()),(int)(e.getY()+ this.aux.getBounds().getY() - this.PP.getY())); //Versión 2
}
}
es que en la Versión 1se mueve toda la pantalla en grandes saltos con forme muevo el mouse, pero si lo coloco en la Versión 2 se mueve toda la pantalla conforme muevo el mouse pero suevemente sin saltos, de todas formas no consigo mover alguno de los JPannels.
me parece muy extraño que se mueva la pantalla, bueno tratare de hacer un ejemplo, a ver si te sirve, te lo colgare en estos dias que estoy medio ocupado, pero debido a tu interés me dan ganas de ayudarte.
Hola, me has dado ciertas ideas con lo de la variable aux, ahora se me ocurrió esto:
Este es el botón con el que creo los paneles a mover
private void jButton6MouseClicked(java.awt.event.MouseEvent evt) {
this.clicks+=1;
JPM=new JPanel();
JPM.setName("Panel"+this.clicks);
this.jPanel11.add(JPM);
JPM.setBounds(50, 50, 50, 50);
JPM.setBorder(javax.swing.BorderFactory.createLineBorder(new Color(0,0,0)));//
this.validate();
}
Ahora en el panel donde los coloco llamado jPanel11
private void jPanel11MousePressed(java.awt.event.MouseEvent evt) {
aux=this.jPanel11.getComponentAt(evt.getPoint());//Obtengo el componente y se lo asigno a aux previamente declarado sin instanciar como Component, también esta decarada de la misma manera antaux, (auxiliar anterior)
if(antaux==null){//primera vez, es decir coloco el primer panel a mover dentro del jPanel11 mediante click en el Jbutton6, por lo tanto antaux deve de ser igual a null, por ser el primero
if(aux!=null){Compruebo que aux tenga algo, si es así, añado los eventos que me interesan para mover ése JPanel en particular
aux.addMouseListener(new java.awt.event.MouseAdapter() {
@Override
public void mousePressed(java.awt.event.MouseEvent e){
MousePressed(e);
}
});
aux.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
public void mouseDragged(java.awt.event.MouseEvent e){
MouseDragged(e);
}
});
antaux=aux;Actualizo a antaux con aux
}
}else{//siguientes veces, en caso de que no sea la primera vez que se añade un JPanel al JPanel11, entónces antaux tendrá que ser diferente de null
if(aux!=null){//Se comprueba que aux tenga algo
if(antaux!=aux){Se pregunta si el antaux es diferente del aux, (actual), para que No sea el caso de estar haciendo mousePressed en el mismo JPanel
//si es diferente (osea que no sea la misma instancia o el mismo objeto), entonces, se le quita los listeners al anterior
antaux.removeMouseListener(antaux.getMouseListeners()[0]);
antaux.removeMouseMotionListener(antaux.getMouseMotionListeners()[0]);
//actualizo antaux
antaux=aux;
//y al nuevo aux se le asignan los eventos
aux.addMouseListener(new java.awt.event.MouseAdapter() {
@Override
public void mousePressed(java.awt.event.MouseEvent e){
MousePressed(e);
}
});
aux.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
public void mouseDragged(java.awt.event.MouseEvent e){
MouseDragged(e);
}
});
}
}
}
}
Esta son mis implementaciónes, de los eventos
public void MousePressed(java.awt.event.MouseEvent e){
this.PP2.x=e.getX();El objeto PP2 esta declarado he instanciado en el código completo como Point() hasta arriba del código
this.PP2.y=e.getY();
}
public void MouseDragged(java.awt.event.MouseEvent e){
this.aux.setLocation((int)(e.getX()+ this.aux.getBounds().getX() - this.PP2.getX()),(int)(e.getY()+ this.aux.getBounds().getY() - this.PP2.getY()));
}
Básicamente lo que hago es mediante el MousePressed del JPanel11 es agregar al JPanel donde se hiso el Mouse Pressed del JPanel11los eventos para moverlo, y quitarle los eventos mencionados cuando se hace Mouse Pressed del JPanel11en otro de los JPanels agregados con el botón JButton6, dandole al nuevo JPanel los eventos, así puedo mover cada JPanel añadido, por que en el momento del Mouse Pressed del JPanel11 solo el JPanel donde se probocó dicho evento tendrá los eventos para mover, solo que tengo que hacer digamos click y medio, por que debo de hacer el click en el JPanel amover para que registre el Mouse Pressed del JPanel11 sobre el JPanel a mover y después hacer el Mouse Pressed propio del JPanel a mover sobre el mismo y hacer el Mouse Dragged para moverlo, quizá poniendo dicha validación en un Mouse Exited pues al parecer cuando el mouse "entra en el JPanel a mover" deve de estar saliendo del JPanel11, ¿Qué opinas?, Espero vuestro código de ejemplo para poder aprender más de vuestra solución y ver y corregir mis errores, por cierto he quitado mucho código comentado para que estuviera más limpio, Gracias Saludos
Muchísimas gracias a choses, y a jhosep, por interesarse en el tema y ayudarme a resolverlo, gracias jhosep por que me diste ideas y se pudo resolver el problema, quedé con ganas de ver vuestro ejemplo, pero de todas formas muchísimas gracias Saludos
Hola a todos, recientemente he tenido que programar una aplicación donde en un JPanel debo de añadir más JPanels, (eso ya se resolvió), el punto es que los JPannels agregados deben de poder moverse con el mouse, le he intentado de varias formas y lo que consigo después de: (crear los JPannels, añadirlos y asignarles los eventos MousePressed, para localizar el punto de arrastre, y MouseDragged para arrastrar el componente agregado, mediante el Click de un botón para eso), es que al añadir el primer JPannel, todo va de maravilla, le puedo arrastrar perfectamente por el JPannel principal, pues donde los añado, pero al añadir el segundo, los eventos antes mencionados, por alguna razón que no conozco, se trasladan al segundo JPannel, el cual puedo mover sin problemas, pero si se me ocurre volver a mover el primer JPannel que ya había agregado, resulta que el segundo JPannel agregado se mueve en relación del punto en el que presiono en el Primer JPannel. Todavía no he podido hacer que a la hora de añadirle a cada JPannel que creo, los eventos que se necesitan para moverlos y que estos eventos sean independientes, para poder mover cada JPannel por separado, esto me será útil para la aplicación pues tengo que añadir no solo JPannels sino también más componentes y moverlos cada uno e independientemente, ya he visitado algunas Webs, tales como:http://www.jc-mouse.net/java/crear-componentes-en-tiempo-de-ejecucion-con-netbeans, de todas formas estoy trabajando tanto en NetBeans 6.8 como en Clipse Juno Build 20120614-1722, ya también me metía las API's de JAva en Oracle y a algunos manuales de allí mismo, agrego algo del código que tengo, el cual viene con algunos intentos mios comentados de resolver el problema:
private void jButton6MouseClicked(java.awt.event.MouseEvent evt) { aquí creo los JPannels
this.clicks+=1;
ky="K"+clicks;
JPM=new JPanel();
JPM.setName("Panel"+this.clicks);
this.jPanel11.add(JPM);
mcontrols.put(ky, JPM);
JPM.addMouseListener(new java.awt.event.MouseAdapter(){
@Override
public void mousePressed(java.awt.event.MouseEvent e){
JPMMousePressed(JPM,e);
}
});
JPM.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
//@Override
public void mouseDragged(java.awt.event.MouseEvent e){
JPMMouseDragged(e);
}
});
JPM.setBounds(50, 50, 50, 50);
JPM.setBorder(javax.swing.BorderFactory.createLineBorder(new Color(0,0,0)));// TODO add your handling code here:
this.validate();
}
public void JPMMousePressed(Component C,java.awt.event.MouseEvent e){Capturo el punto para mover,
//this.nombreComp=e.getComponent().getName();
if(C.getName().equals(e.getComponent().getName())){
this.JTA1.setText("ES La fuente del evento!!!");
}else{
this.JTA1.setText("NO ES La fuente del evento!!!");
};
//this.txtTa1+=this.mcontrols.entrySet().toString()+"\r\n\r\n";
// this.JTA1.setText(txtTa1);
// if(this.mcontrols.containsValue("Panle1")){
// this.JTA1.setText("TRUE");
// }
//Iterator it=this.mcontrols.values().iterator();
//this.JTA1.setText(ky);
this.PP.x=e.getX();
this.PP.y=e.getY();
//this.jLabel22.setText("X: "+e.getX()+" Y: "+e.getY());
}
public void JPMMouseDragged(java.awt.event.MouseEvent e){Moviendo el JPannel presionado
//if(e.getComponent().getName().equals(this.nombreComp)){
this.JPM.setLocation((int)(e.getX()+ this.JPM.getBounds().getX() - this.PP.getX()),(int)(e.getY()+ this.JPM.getBounds().getY() - this.PP.getY()));
//}
}
¿Alguna sugerencia?, ¿Página o manual que leer?, ¿o algún típ, consejo etc?
Gracias de antemano y Saludos