2013-04-06 75 views
1

我正在用JTabbedPane和JButton編寫一個交互式程序。到目前爲止,我已經能夠使它所以當「保留一個航班」選項卡中單擊,此面板顯示出來:JTabbedPane中的JButton

IMG http://i46.tinypic.com/2dtt91j.png

我想這也將採用的MouseListener時顯示圖像我點擊任一按鈕。代碼是什麼樣的?

這是我目前的方法:

顯示圖像:

protected JComponent makeImagePanel(String path) 
{ 
    try{ 
     JPanel panel = new JPanel(false); 
     BufferedImage myPicture = ImageIO.read(new File(path)); 
     JLabel picLabel = new JLabel(new ImageIcon(myPicture)); 
     panel.add(picLabel); 

     return panel; 
    }catch (IOException e) 
    { 
     throw new IllegalArgumentException("Unable to load" + path); 
    } 

} 

和鼠標事件:

 protected JComponent FlightOptions() 
    { 
    JPanel panel= new JPanel(false); 
    JButton international= new JButton("International Flights"); 
    JButton domestic= new JButton("Domestic Flights"); 
    international.setVerticalTextPosition (AbstractButton.CENTER); 
    international.setHorizontalTextPosition(AbstractButton.LEADING); 
    domestic.setVerticalTextPosition (AbstractButton.CENTER); 
    domestic.setHorizontalTextPosition(AbstractButton.LEADING); 
    international.setActionCommand("international"); 
    domestic.setActionCommand("domestic"); 
    international.setEnabled(true); 
    MouseAdapter2 mouse= new MouseAdapter2(); 
    international.addMouseListener(mouse); 
    domestic.addMouseListener(mouse); 
    panel.setLayout(new GridLayout(1, 1)); 
    panel.add(international); 
    panel.add(domestic); 
    return panel; 
} 
class MouseAdapter2 extends MouseAdapter { 

    public void mousePressed(MouseEvent e) { 
     JButton buttonpressed = (JButton)e.getSource(); 
     if(buttonpressed==international) 
     { 
      reservation= makeImagePanel("international_1.gif"); 
      overview.addTab("International Flight", reservation); 

     } 
    } 

謝謝!

+0

做你想要的形象出現時,鼠標進入該按鈕 – 2013-04-06 05:02:17

+0

@NidhishKrishnan我想要的圖像時,鼠標點擊的出現按鈕。 – nichi 2013-04-06 05:03:22

回答

2

你可以通過使用

jButton2.setPressedIcon(new javax.swing.ImageIcon(getClass().getResource("/newpackage/Water lilies.jpg"))); 

運行這段代碼,看看它是如何工作的

更新用2

import javax.swing.JFrame; 
import javax.swing.JOptionPane; 

public class Sample extends javax.swing.JFrame { 
    public Sample() { 
     initComponents(); 
    } 
    @SuppressWarnings("unchecked") 
    // <editor-fold defaultstate="collapsed" desc="Generated Code"> 
    private void initComponents() { 

     jTabbedPane1 = new javax.swing.JTabbedPane(); 
     jPanel2 = new javax.swing.JPanel(); 
     jButton1 = new javax.swing.JButton(); 
     jButton2 = new javax.swing.JButton(); 

     setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); 

     jPanel2.setLayout(new java.awt.GridLayout()); 

     jButton1.setText("jButton1"); 
     jButton1.setPressedIcon(new javax.swing.ImageIcon(getClass().getResource("/newpackage/Blue hills.jpg"))); // NOI18N 
     jButton1.addActionListener(new java.awt.event.ActionListener() { 
      public void actionPerformed(java.awt.event.ActionEvent evt) { 
       jButton1ActionPerformed(evt); 
      } 
     }); 
     jPanel2.add(jButton1); 

     jButton2.setText("jButton1"); 
     jButton2.setPressedIcon(new javax.swing.ImageIcon(getClass().getResource("/newpackage/Water lilies.jpg"))); // NOI18N 
     jButton2.addActionListener(new java.awt.event.ActionListener() { 
      public void actionPerformed(java.awt.event.ActionEvent evt) { 
       jButton2ActionPerformed(evt); 
      } 
     }); 
     jPanel2.add(jButton2); 

     jTabbedPane1.addTab("tab2", jPanel2); 

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

     pack(); 
    }// </editor-fold> 

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { 

    ImagePanel panel = new ImagePanel(); 
    // display the jpanel in a joptionpane dialog, using showMessageDialog 
    JFrame frame = new JFrame("JOptionPane showMessageDialog component example"); 
    JOptionPane.showMessageDialog(frame, panel); 
    } 

    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) { 
    ImagePanel2 panel = new ImagePanel2(); 
    // display the jpanel in a joptionpane dialog, using showMessageDialog 
    JFrame frame = new JFrame("JOptionPane showMessageDialog component example"); 
    JOptionPane.showMessageDialog(frame, panel); 
    } 

    public static void main(String args[]) { 

     //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) "> 

     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(Sample.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
     } catch (InstantiationException ex) { 
      java.util.logging.Logger.getLogger(Sample.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
     } catch (IllegalAccessException ex) { 
      java.util.logging.Logger.getLogger(Sample.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
     } catch (javax.swing.UnsupportedLookAndFeelException ex) { 
      java.util.logging.Logger.getLogger(Sample.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
     } 
     //</editor-fold> 

     java.awt.EventQueue.invokeLater(new Runnable() { 

      public void run() { 
       new Sample().setVisible(true); 
      } 
     }); 
    } 
    // Variables declaration - do not modify 
    private javax.swing.JButton jButton1; 
    private javax.swing.JButton jButton2; 
    private javax.swing.JPanel jPanel2; 
    private javax.swing.JTabbedPane jTabbedPane1; 
    // End of variables declaration 
} 

ImagePanel.java

public class ImagePanel extends javax.swing.JPanel { 
    public ImagePanel() { 
     initComponents(); 
    } 
    @SuppressWarnings("unchecked") 
    // <editor-fold defaultstate="collapsed" desc="Generated Code"> 
    private void initComponents() { 

     jLabel1 = new javax.swing.JLabel(); 

     jLabel1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/newpackage/Blue hills.jpg"))); // NOI18N 

     javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); 
     this.setLayout(layout); 
     layout.setHorizontalGroup(
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) 
     ); 
     layout.setVerticalGroup(
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, 609, Short.MAX_VALUE) 
     ); 
    }// </editor-fold> 
    // Variables declaration - do not modify 
    private javax.swing.JLabel jLabel1; 
    // End of variables declaration 
} 

ImagePanel2.java

public class ImagePanel2 extends javax.swing.JPanel { 
    public ImagePanel2() { 
     initComponents(); 
    } 
    @SuppressWarnings("unchecked") 
    // <editor-fold defaultstate="collapsed" desc="Generated Code"> 
    private void initComponents() { 

     jLabel1 = new javax.swing.JLabel(); 

     jLabel1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/newpackage/Water lilies.jpg"))); // NOI18N 

     javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); 
     this.setLayout(layout); 
     layout.setHorizontalGroup(
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) 
     ); 
     layout.setVerticalGroup(
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) 
     ); 
    }// </editor-fold> 
    // Variables declaration - do not modify 
    private javax.swing.JLabel jLabel1; 
    // End of variables declaration 
} 
+0

謝謝!有沒有辦法,該按鈕可以打開一個新的標籤,其中包含圖像,或者一個新的面板將顯示圖像?當我點擊時,圖像現在消失。 – nichi 2013-04-06 05:13:08

+0

非常感謝!這工作很好:) – nichi 2013-04-06 05:45:03

+0

+1,這是有幫助的:) – arjuncc 2013-04-08 04:47:42