1
如果一個jLabel在另一個之上,我想閱讀。我將jLabel1拖放到jLabel2的頂部,然後將它放在那裏,如果它位於頂部,則執行一些操作。代碼:Java jLabel在另一個聽衆之上
package javaapplication5;
import java.awt.Component;
import java.awt.Point;
public class NewJFrame extends javax.swing.JFrame {
boolean OptionsDrag = false, OptionsDrop = false;
private Point initialLoc;
private Point initialLocOnScreen;
/**
* Creates new form NewJFrame
*/
public NewJFrame() {
initComponents();
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
jLabel3 = new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setMaximumSize(new java.awt.Dimension(400, 300));
setMinimumSize(new java.awt.Dimension(400, 300));
getContentPane().setLayout(null);
jLabel1.setBackground(new java.awt.Color(0, 0, 255));
jLabel1.setOpaque(true);
jLabel1.addMouseListener(new java.awt.event.MouseAdapter() {
public void mousePressed(java.awt.event.MouseEvent evt) {
jLabel1MousePressed(evt);
}
public void mouseReleased(java.awt.event.MouseEvent evt) {
jLabel1MouseReleased(evt);
}
});
jLabel1.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
public void mouseDragged(java.awt.event.MouseEvent evt) {
jLabel1MouseDragged(evt);
}
});
getContentPane().add(jLabel1);
jLabel1.setBounds(90, 130, 48, 48);
jLabel2.setBackground(new java.awt.Color(0, 255, 255));
jLabel2.setOpaque(true);
jLabel2.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseEntered(java.awt.event.MouseEvent evt) {
jLabel2MouseEntered(evt);
}
});
getContentPane().add(jLabel2);
jLabel2.setBounds(230, 80, 48, 48);
jLabel3.setText("showed");
jLabel3.setVisible(false);
getContentPane().add(jLabel3);
jLabel3.setBounds(40, 30, 37, 20);
pack();
}// </editor-fold>
private void jLabel1MousePressed(java.awt.event.MouseEvent evt) {
Component comp = (Component)evt.getSource();
initialLoc = comp.getLocation();
initialLocOnScreen = evt.getLocationOnScreen();
}
private void jLabel1MouseReleased(java.awt.event.MouseEvent evt) {
Component comp = (Component)evt.getSource();
Point locOnScreen = evt.getLocationOnScreen();
int x = locOnScreen.x - initialLocOnScreen.x + initialLoc.x;
int y = locOnScreen.y - initialLocOnScreen.y + initialLoc.y;
comp.setLocation(x, y);
OptionsDrop = true;
}
private void jLabel1MouseDragged(java.awt.event.MouseEvent evt) {
Component comp = (Component)evt.getSource();
Point locOnScreen = evt.getLocationOnScreen();
int x = locOnScreen.x - initialLocOnScreen.x + initialLoc.x;
int y = locOnScreen.y - initialLocOnScreen.y + initialLoc.y;
comp.setLocation(x, y);
OptionsDrag = true;
}
private void jLabel2MouseEntered(java.awt.event.MouseEvent evt) {
if(OptionsDrag == true && OptionsDrop == true){
jLabel3.setVisible(true);
}
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
//</editor-fold>
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
new NewJFrame().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
// End of variables declaration
}
我可以移動jLabel1,但是當它放在名爲Preview_1的其他標籤上時,它什麼都不做。 我看到,當我拖放它很好,但它只有當我用青色塊上的鼠標進入時才起作用。當藍色盒子變成青色而不是鼠標時,可以這樣做嗎?
正如前面已經提到您,請*** ***創建和發佈的[SSCCE(http://sscce.org),所以你不」迫使我們做出一個。 –
Ok編輯。我把代碼鏈接到應用程序。 –
請重新閱讀鏈接:[sscce](http://sscce.org)。是的,我要求你們付出一些努力來創造這一點,但它只不過是你已經要求我們做的。努力的責任應該主要是你的,因爲這是你的問題。 –