1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
| package javaapplication2;
import com.jgoodies.forms.layout.CellConstraints;
import com.jgoodies.forms.layout.FormLayout;
import java.awt.Dimension;
import java.awt.Rectangle;
import javax.swing.*;
/**
*
* Test sur tabbed pane dont la taille préférentielle est la taille du composant couramment affiché
*
* @author Administrateur
*/
public class TabbedPane extends JTabbedPane
{
public TabbedPane()
{ super(); }
protected void fireStateChanged()
{
super.fireStateChanged();
/** remove all components and add the component at the selected index */
JComponent c = (JComponent)this.getSelectedComponent();
Dimension d = c.getPreferredSize();
Rectangle rec = this.getUI().getTabBounds(this, this.getSelectedIndex());
d.height += rec.height - rec.y;
this.setPreferredSize(d);
}
public static void main(String[] args)
{
final JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
JPanel contentPanel = new JPanel(new FormLayout("fill:pref:grow", "pref, pref, pref"));
CellConstraints cc = new CellConstraints();
final TabbedPane tabbed = new TabbedPane();
JPanel panela = new JPanel(new FormLayout("pref", "pref, fill:pref:grow"));
JButton button = new JButton("6FFFFFFFFFFFF");
panela.add(button, cc.xy(1, 1));
button.setPreferredSize(new Dimension(70, 20));
button.setAlignmentY(0.0f);
JPanel panel = new JPanel();
BoxLayout layout2 = new BoxLayout(panel, BoxLayout.PAGE_AXIS);
panel.setLayout(layout2);
panel.add(new JButton("1AAAAAAAAAAAAAAA"));
panel.add(new JButton("2BBBBBBBBBBBBBBB"));
panel.add(new JButton("3CCCCCCCCCCCCCCC"));
panel.add(new JButton("4DDDDDDDDDDDDDDD"));
panel.add(new JButton("5EEEEEEEEEEEEEEE"));
tabbed.addTab("b", panel);
tabbed.addTab("a", panela);
contentPanel.add(new JLabel("label de début"), cc.xy(1, 1, cc.LEFT, cc.TOP));
contentPanel.add(tabbed, cc.xy(1, 2, cc.LEFT, cc.TOP));
contentPanel.add(new JLabel("label de fin"), cc.xy(1, 3, cc.LEFT, cc.TOP));
frame.setContentPane(contentPanel);
frame.pack();
frame.setVisible(true);
}
} |
Partager