2015-11-01 97 views
3

我想要当我点击tab1或tab2。 Japel显示会隐藏或显示,我想要的结果如图2所示。我使用命令jPanel2.setPreferredSize(new Dimension(0,0));Java隐藏JTabbedPane

例如:如果我有10个,我需要了setPreferredSize 10个japanel每个tab.I想问一个更简单的方法。

enter image description here

enter image description here

活动点击我的标签不起作用properly.Please帮我

/* 
* To change this license header, choose License Headers in Project Properties. 
* To change this template file, choose Tools | Templates 
* and open the template in the editor. 
*/ 
package main; 

import java.awt.Dimension; 

/** 
* 
* @author KhongTuyen 
*/ 
public class demo extends javax.swing.JFrame { 

    /** 
    * Creates new form demo 
    */ 
    public demo() { 
     initComponents(); 
     jPanel2.setVisible(false); 
    } 

    /** 
    * 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(); 
     jPanel4 = new javax.swing.JPanel(); 
     jPanel1 = new javax.swing.JPanel(); 
     jPanel2 = new javax.swing.JPanel(); 

     setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); 

     jTabbedPane1.setTabPlacement(javax.swing.JTabbedPane.BOTTOM); 
     jTabbedPane1.addMouseListener(new java.awt.event.MouseAdapter() { 
      public void mouseClicked(java.awt.event.MouseEvent evt) { 
       jTabbedPane1MouseClicked(evt); 
      } 
     }); 
     jTabbedPane1.addChangeListener(new javax.swing.event.ChangeListener() { 
      public void stateChanged(javax.swing.event.ChangeEvent evt) { 
       jTabbedPane1StateChanged(evt); 
      } 
     }); 

     jPanel4.setPreferredSize(new java.awt.Dimension(395, 0)); 

     javax.swing.GroupLayout jPanel4Layout = new javax.swing.GroupLayout(jPanel4); 
     jPanel4.setLayout(jPanel4Layout); 
     jPanel4Layout.setHorizontalGroup(
      jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addGap(0, 395, Short.MAX_VALUE) 
     ); 
     jPanel4Layout.setVerticalGroup(
      jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addGap(0, 0, Short.MAX_VALUE) 
     ); 

     jTabbedPane1.addTab("tab1", jPanel4); 

     jPanel1.setPreferredSize(new java.awt.Dimension(395, 0)); 

     javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); 
     jPanel1.setLayout(jPanel1Layout); 
     jPanel1Layout.setHorizontalGroup(
      jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addGap(0, 395, Short.MAX_VALUE) 
     ); 
     jPanel1Layout.setVerticalGroup(
      jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addGap(0, 0, Short.MAX_VALUE) 
     ); 

     jTabbedPane1.addTab("tab2", jPanel1); 

     getContentPane().add(jTabbedPane1, java.awt.BorderLayout.PAGE_START); 

     javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2); 
     jPanel2.setLayout(jPanel2Layout); 
     jPanel2Layout.setHorizontalGroup(
      jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addGap(0, 400, Short.MAX_VALUE) 
     ); 
     jPanel2Layout.setVerticalGroup(
      jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addGap(0, 253, Short.MAX_VALUE) 
     ); 

     getContentPane().add(jPanel2, java.awt.BorderLayout.CENTER); 

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

    private void jTabbedPane1MouseClicked(java.awt.event.MouseEvent evt) {           
     int count = 0; 
     if (count % 2 != 0) { 
      jPanel2.setPreferredSize(new Dimension(0, 100)); 
      jPanel1.setPreferredSize(new Dimension(0, 100)); 
     } else { 
      jPanel2.setPreferredSize(new Dimension(0, 0)); 
      jPanel1.setPreferredSize(new Dimension(0, 0)); 
     } 
     count++; 
    }           

    private void jTabbedPane1StateChanged(javax.swing.event.ChangeEvent evt) {           
     // TODO add your handling code here: 
    }           

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String args[]) { 
     /* Set the Nimbus look and feel */ 
     //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) "> 
     /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel. 
     * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
     */ 
     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(demo.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
     } catch (InstantiationException ex) { 
      java.util.logging.Logger.getLogger(demo.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
     } catch (IllegalAccessException ex) { 
      java.util.logging.Logger.getLogger(demo.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
     } catch (javax.swing.UnsupportedLookAndFeelException ex) { 
      java.util.logging.Logger.getLogger(demo.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
     } 
     //</editor-fold> 

     /* Create and display the form */ 
     java.awt.EventQueue.invokeLater(new Runnable() { 
      public void run() { 
       new demo().setVisible(true); 
      } 
     }); 
    } 

    // Variables declaration - do not modify      
    private javax.swing.JPanel jPanel1; 
    private javax.swing.JPanel jPanel2; 
    private javax.swing.JPanel jPanel4; 
    private javax.swing.JTabbedPane jTabbedPane1; 
    // End of variables declaration     
} 

回答

3

使用JSplitPane。您可以点击分压器上的按钮,使分压器达到分压器的最小值或最大值。

然而,为了分隔去最小的getMinimumSize()方法必须返回的尺寸(0,0)。

阅读从How to Use Split Panes Swing的教程详细信息和示例部分。

2

您是不是要找这样的事情

import java.awt.BorderLayout; 
import java.awt.Font; 

import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 
import javax.swing.JTabbedPane; 
import javax.swing.JTextField; 
import javax.swing.event.ChangeEvent; 
import javax.swing.event.ChangeListener; 

public class TabSample { 
    static void add(JTabbedPane tabbedPane, String text) { 
    String text1 = ""; 
    JPanel panel = new JPanel(); 
    if (text.equals("tab1")){ 
    text1 = ""; 
    } 
    else 
    { 
    text1 = text; 


    }  


    JLabel label = new JLabel(text1); 
    label.setFont(new Font(null,Font.BOLD,30)); 

    label.setText(text1); 

    panel.add(label); 
    tabbedPane.addTab(text,label); 
    } 

    public static void main(String args[]) { 
    JFrame frame = new JFrame("Tabbed Pane Sample"); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

    JTabbedPane tabbedPane = new JTabbedPane(); 
tabbedPane.setTabPlacement(JTabbedPane.BOTTOM); 
    String titles[] = { "tab1", "Jpanel Display 2"}; 
    for (int i = 0, n = titles.length; i < n; i++) { 


     add(tabbedPane, titles[i]); 
    } 

    ChangeListener changeListener = new ChangeListener() { 
     public void stateChanged(ChangeEvent changeEvent) { 
     JTabbedPane sourceTabbedPane = (JTabbedPane) changeEvent.getSource(); 
     int index = sourceTabbedPane.getSelectedIndex(); 
     System.out.println("Tab changed to: " + sourceTabbedPane.getTitleAt(index)); 
     } 
    }; 
    tabbedPane.addChangeListener(changeListener); 
    frame.add(tabbedPane, BorderLayout.CENTER); 
    frame.setSize(400, 150); 
    frame.setVisible(true); 
    } 
}