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 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
|
public class Test extends JFrame{
public Test(){
super("Test");
Container contentpane = getContentPane();
contentpane.setLayout(new GridLayout(2,2));
contentpane.add(createTabbedPane(JTabbedPane.LEFT));
contentpane.add(createTabbedPane(JTabbedPane.TOP));
contentpane.add(createTabbedPane(JTabbedPane.BOTTOM));
contentpane.add(createTabbedPane(JTabbedPane.RIGHT));
setSize(500,600);setDefaultCloseOperation(EXIT_ON_CLOSE);
setLocationRelativeTo(null);setVisible(true);
}
private JTabbedPane createTabbedPane(int tabPlacement){
JTabbedPane tabbedpane = new JTabbedPane();
tabbedpane.setTabPlacement(tabPlacement);
tabbedpane.setUI(new MonUI());
tabbedpane.addTab("panel 1",new ImageIcon("icone.gif"), new JLabel("panel 1"));
tabbedpane.addTab("panel 2", new JLabel("panel 2"));
tabbedpane.addTab("panel 3", new JLabel("panel 3"));
tabbedpane.setForeground(Color.BLUE);
tabbedpane.setFont(new Font("Dialog",Font.ITALIC,15));
return tabbedpane;
}
private class MonUI extends BasicTabbedPaneUI{
public MonUI(){super();}
private Image getVerticalImage(int tabIndex){
ImageIcon iconeNormale = (ImageIcon)tabPane.getIconAt(tabIndex);
int iconeWidth = (iconeNormale!=null)?iconeNormale.getIconHeight():0;
int iconeHeight = (iconeNormale!=null)?iconeNormale.getIconWidth():0;
String titre = tabPane.getTitleAt(tabIndex);
FontMetrics metrics = getFontMetrics();
int titreWidth = (titre!=null)?metrics.stringWidth(titre):0;
int titreHeight = (titre!=null)?metrics.getHeight():0;
int height = iconeWidth+titreWidth+textIconGap+1;
int width = Math.max(iconeHeight,titreHeight);
boolean isSelected = (tabPane.getSelectedIndex()==tabIndex);
int tabPlacement = tabPane.getTabPlacement();
BufferedImage image = new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
Graphics2D g2 = image.createGraphics();
if(tabPlacement==JTabbedPane.LEFT){g2.translate(0,height);g2.rotate(-Math.PI/2);}
else{g2.translate(width,0);g2.rotate(Math.PI/2);}
Color background = (isSelected)?UIManager.getColor("TabbedPane.selected"):
tabPane.getBackgroundAt(tabIndex);
g2.setColor(background);g2.fillRect(0,0,height,width);
if(iconeNormale!=null)g2.drawImage(iconeNormale.getImage(),0,0,null);
if(titre!=null){
g2.setFont(metrics.getFont());
g2.setColor(tabPane.getForegroundAt(tabIndex));
int mnemIndex = tabPane.getDisplayedMnemonicIndexAt(tabIndex);
BasicGraphicsUtils.drawStringUnderlineCharAt(g2,titre, mnemIndex
,iconeWidth+textIconGap,metrics.getAscent());
}
g2.dispose();
return image;
}
private boolean isBottomOrTop(){
int tabPlacement = tabPane.getTabPlacement();
return tabPlacement==JTabbedPane.TOP||tabPlacement==JTabbedPane.BOTTOM;
}
protected int calculateTabHeight(int tabPlacement,int tabIndex,int fontHeight){
if(isBottomOrTop()){
return super.calculateTabHeight(tabPlacement,tabIndex,fontHeight);
}
return super.calculateTabWidth(tabPlacement,tabIndex,getFontMetrics());
}
protected int calculateTabWidth(int tabPlacement,int tabIndex,FontMetrics metrics){
if(isBottomOrTop()){
return super.calculateTabWidth(tabPlacement,tabIndex,metrics);
}
return getVerticalImage(tabIndex).getWidth(null);
}
protected void paintText(Graphics g, int tabPlacement, Font font
, FontMetrics metrics, int tabIndex, String title
, Rectangle textRect, boolean isSelected){
if(isBottomOrTop()){
super.paintText(g,tabPlacement,font,metrics,tabIndex,title,textRect,isSelected);
}else{
Image image = getVerticalImage(tabIndex);
Rectangle r = getTabBounds(tabPane,tabIndex);
Insets insets = getTabAreaInsets(tabPlacement);
int dx = r.x+insets.top; int dy = r.y;
if(tabPlacement==JTabbedPane.LEFT){dy+=insets.left;}
else{dy+=insets.right;}
g.drawImage(image,dx,dy,null);
}
}
protected void paintIcon(Graphics g, int tabPlacement, int tabIndex,
Icon icon, Rectangle iconRect, boolean isSelected){
if(!isBottomOrTop()){return;}
super.paintIcon(g,tabPlacement,tabIndex,icon,iconRect,isSelected);
}
}
public static void main(String[] args){new Test();}
} |
Partager