2013-04-16 33 views
0

我试图添加一个侦听器到我的程序,当面板被点击时它将打开一个新的JFrame。例如jpanel4是面板标签的消息。当我点击jpanel4时,我希望它打开SendMessages JFrame,它是SendMessages类。如何使用mouseListener打开新的JFrame

任何有关我需要去哪个方向的见解?这种方法是否可行?

import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 

public abstract class UserProfile extends javax.swing.JFrame implements MouseListener { 

/** 
* Creates new form NewJFrame 
*/ 
public UserProfile() { 
    initComponents(); 
} 


@SuppressWarnings("unchecked") 

private void initComponents() { 



    jPanel1 = new javax.swing.JPanel(); 
    jScrollPane1 = new javax.swing.JScrollPane(); 
    jTextArea1 = new javax.swing.JTextArea(); 
    jLabel1 = new javax.swing.JLabel(); 
    jScrollPane2 = new javax.swing.JScrollPane(); 
    jTextArea2 = new javax.swing.JTextArea(); 
    jPanel2 = new javax.swing.JPanel(); 
    jPanel3 = new javax.swing.JPanel(); 
    jLabel2 = new javax.swing.JLabel(); 
     //message panel 
    jPanel4 = new javax.swing.JPanel(); 
    jLabel3 = new javax.swing.JLabel(); 
    jPanel5 = new javax.swing.JPanel(); 
    jLabel4 = new javax.swing.JLabel(); 
    jPanel6 = new javax.swing.JPanel(); 
    jLabel5 = new javax.swing.JLabel(); 
    jPanel7 = new javax.swing.JPanel(); 
    jLabel6 = new javax.swing.JLabel(); 
    jLabel8 = new javax.swing.JLabel(); 
    jPanel4.addMouseListener(this);  

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); 

    jTextArea1.setColumns(20); 
    jTextArea1.setRows(5); 
    jScrollPane1.setViewportView(jTextArea1); 

    jLabel1.setText("Bio"); 

    jTextArea2.setColumns(20); 
    jTextArea2.setRows(5); 
    jScrollPane2.setViewportView(jTextArea2); 


     // Read the image file into an ImageIcon object. 
     ImageIcon penguinsImage = new ImageIcon("C:/Users/Public/Pictures/Sample  Pictures/penguins.jpg"); 
     //penguinsImage.setPreferredSize(new Dimension(60, 60)); 


    // Display the image in the label. 
    jLabel8.setIcon(penguinsImage); 
        jLabel8.revalidate(); 
    // Remove the text from the label. 
    jLabel8.setText(null); 

    // jPanel2.setPreferredSize(new java.awt.Dimension(100, 100)); 
     javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2); 
    jPanel2.setLayout(jPanel2Layout); 
    jPanel2Layout.setHorizontalGroup(
     jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
     .addComponent(jLabel8) 

     ); 
    jPanel2Layout.setVerticalGroup(
     jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addComponent(jLabel8) 
     .addGap(0, 100, Short.MAX_VALUE) 
    ); 

    jLabel2.setText("Home"); 

    javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3); 
    jPanel3.setLayout(jPanel3Layout); 
    jPanel3Layout.setHorizontalGroup(
     jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
     .addGroup(jPanel3Layout.createSequentialGroup() 
      .addGap(24, 24, 24) 
      .addComponent(jLabel2) 
      .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) 
    ); 
    jPanel3Layout.setVerticalGroup(
     jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
     .addGroup(jPanel3Layout.createSequentialGroup() 
      .addContainerGap() 
      .addComponent(jLabel2) 
      .addContainerGap(40, Short.MAX_VALUE)) 
    ); 

    jLabel3.setText("Messages"); 

    javax.swing.GroupLayout jPanel4Layout = new javax.swing.GroupLayout(jPanel4); 
    jPanel4.setLayout(jPanel4Layout); 
    jPanel4Layout.setHorizontalGroup(
     jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
     .addGroup(jPanel4Layout.createSequentialGroup() 
      .addContainerGap() 
      .addComponent(jLabel3) 
      .addContainerGap(19, Short.MAX_VALUE)) 
    ); 
    jPanel4Layout.setVerticalGroup(
     jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
     .addGroup(jPanel4Layout.createSequentialGroup() 
      .addContainerGap() 
      .addComponent(jLabel3) 
      .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) 
    ); 

    jLabel4.setText("Events"); 

    javax.swing.GroupLayout jPanel5Layout = new javax.swing.GroupLayout(jPanel5); 
    jPanel5.setLayout(jPanel5Layout); 
    jPanel5Layout.setHorizontalGroup(
     jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
     .addGroup(jPanel5Layout.createSequentialGroup() 
      .addContainerGap() 
      .addComponent(jLabel4) 
      .addContainerGap(19, Short.MAX_VALUE)) 
    ); 
    jPanel5Layout.setVerticalGroup(
     jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
     .addGroup(jPanel5Layout.createSequentialGroup() 
      .addContainerGap() 
      .addComponent(jLabel4) 
      .addContainerGap(48, Short.MAX_VALUE)) 
    ); 

    jLabel5.setText("Groups"); 

    javax.swing.GroupLayout jPanel6Layout = new javax.swing.GroupLayout(jPanel6); 
    jPanel6.setLayout(jPanel6Layout); 
    jPanel6Layout.setHorizontalGroup(
     jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
     .addGroup(jPanel6Layout.createSequentialGroup() 
      .addContainerGap() 
      .addComponent(jLabel5) 
      .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) 
    ); 
    jPanel6Layout.setVerticalGroup(
     jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
     .addGroup(jPanel6Layout.createSequentialGroup() 
      .addContainerGap() 
      .addComponent(jLabel5) 
      .addContainerGap(36, Short.MAX_VALUE)) 
    ); 

    jLabel6.setText("Subscriptions"); 

    javax.swing.GroupLayout jPanel7Layout = new javax.swing.GroupLayout(jPanel7); 
    jPanel7.setLayout(jPanel7Layout); 
    jPanel7Layout.setHorizontalGroup(
     jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
     .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel7Layout.createSequentialGroup() 
      .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) 
      .addComponent(jLabel6) 
      .addContainerGap()) 
    ); 
    jPanel7Layout.setVerticalGroup(

      jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
     .addGroup 
      (jPanel7Layout.createSequentialGroup() 
      .addContainerGap() 
      .addComponent(jLabel6) 
      .addContainerGap(36, Short.MAX_VALUE)) 
    ); 

    javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); 
    jPanel1.setLayout(jPanel1Layout); 
    jPanel1Layout.setHorizontalGroup(
     jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
     .addGroup(jPanel1Layout.createSequentialGroup() 
      .addContainerGap() 
      .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
       .addComponent(jScrollPane1) 
       .addGroup(jPanel1Layout.createSequentialGroup() 
        .addComponent(jLabel1) 
        .addGap(0, 0, Short.MAX_VALUE))) 
      .addContainerGap()) 
     .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup() 
      .addGap(36, 36, 36) 
      .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) 
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) 
      .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) 
      .addGap(43, 43, 43)) 
     .addGroup(jPanel1Layout.createSequentialGroup() 
      .addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) 
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
      .addComponent(jPanel4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) 
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
      .addComponent(jPanel5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) 
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
      .addComponent(jPanel6, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) 
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
      .addComponent(jPanel7, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) 
      .addGap(0, 22, Short.MAX_VALUE)) 
    ); 
    jPanel1Layout.setVerticalGroup(
     jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
     .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup() 
      .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
       .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) 
        .addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) 
        .addComponent(jPanel4, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) 
       .addComponent(jPanel5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) 
       .addComponent(jPanel6, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) 
       .addComponent(jPanel7, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) 
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 33, Short.MAX_VALUE) 
      .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
       .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) 
       .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) 
      .addGap(18, 18, 18) 
      .addComponent(jLabel1) 
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
      .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) 
    ); 

    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); 
    getContentPane().setLayout(layout); 
    layout.setHorizontalGroup(
     layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
     .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) 
    ); 
    layout.setVerticalGroup(
     layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
     .addComponent(jPanel1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) 
    ); 

    pack(); 
} 
// panel 4 listener 
     private abstract class jPanel4Listener implements MouseListener 
{ 
    public static void mouseClicked(MouseEvent e) 
    { 
    // opens the send message frame. 
    SendMessage.setVisible(true); 


    } 
} 

    public static void main(String args[]) 
    { 

    /* Create and display the form */ 
    java.awt.EventQueue.invokeLater(new Runnable() { 
     public void run() { 
      new UserProfile().setVisible(true); 
     } 
    }); 
} 
// Variables declaration - do not modify      
private javax.swing.JLabel jLabel1; 
private javax.swing.JLabel jLabel2; 
private javax.swing.JLabel jLabel3; 
private javax.swing.JLabel jLabel4; 
private javax.swing.JLabel jLabel5; 
private javax.swing.JLabel jLabel6; 
private javax.swing.JLabel jLabel8; 
private javax.swing.JPanel jPanel1; 
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.JScrollPane jScrollPane1; 
private javax.swing.JScrollPane jScrollPane2; 
private javax.swing.JTextArea jTextArea1; 
private javax.swing.JTextArea jTextArea2; 
// End of variables declaration     
} 

这就是我最终使用的。

 private class menuBarListener implements MouseListener 
    { 
    public void mouseClicked(MouseEvent e) 
    { 
    String c = e.getComponent().getName(); 


    if (c.equals("MessagePanel")) 
    { 
    // opens the send message frame. //dispose(); closes the current frame 
     SendMessage s = new SendMessage(); 
      dispose(); 
    s.setVisible(true); 
+2

应用程序应该只有一个单一的JFrame。您应该为辅助窗口使用JDialog。 – camickr

+0

要扩展@camickr评论..请参阅[使用多个JFrames,好/坏实践?](http://stackoverflow.com/a/9554657/418556) –

回答