2012-02-22 25 views
3

JMenuに縦書きのテキストを追加したいとします。絵(「JTattoo」)に示すように:JMenuに縦書きテキストを追加

enter image description here

私はGoogleで検索が、実行する方法を見つけることができませんでした。

どのような情報も私に役立ちます。

ありがとうございます。

+1

、[読み取り]ください(http://stackoverflow.com/a/9382795/714968)それは難しいテーマでコーディングされている@mKorbel – mKorbel

+0

。私はソースコードを変更しました:P –

答えて

0

JMenuItemをサブクラス化し、paintComponentをオーバーライドしてレンダリングする方法を変更できます。

+0

はい、もちろんです。私はpaintComponentを意味しました。 – Thorn

+0

大丈夫、あなたのために答えを編集: – kleopatra

2

テキストが複数のメニュー項目にまたがっているため、JMenuItemの拡張とpaintComponentのオーバーライドは機能しません。

JMenuのポップアップメニューにカスタムボーダーを追加します。

は、ここに例を示します潜在的な回答のため

import java.awt.Component; 
import java.awt.Graphics; 
import java.awt.Graphics2D; 
import java.awt.Insets; 
import java.awt.RenderingHints; 
import java.awt.geom.AffineTransform; 

import javax.swing.JFrame; 
import javax.swing.JMenu; 
import javax.swing.JMenuBar; 
import javax.swing.border.Border; 
public class Main { 

    public static void main(final String[] args) { 
     final JFrame frame = new JFrame(); 
     final JMenu menu = new JMenu("Menu"); 
     menu.add("Hello"); 
     menu.add("World"); 
     menu.getPopupMenu().setBorder(new VerticalTextBorder()); 
     final JMenuBar menubar = new JMenuBar(); 
     menubar.add(menu); 
     frame.setJMenuBar(menubar); 
     frame.setSize(300,300); 
     frame.setVisible(true); 
    } 

    private static class VerticalTextBorder implements Border { 
     @Override 
     public Insets getBorderInsets(final Component c) { 
      return new Insets(0, 15, 0, 0); 
     } 

     @Override 
     public void paintBorder(final Component c, final Graphics g, final int x, final int y, final int width, final int height) { 
      final Graphics2D g2 = (Graphics2D)g; 
      final AffineTransform fontAT = new AffineTransform(); 
      g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); 
      fontAT.rotate(-Math.PI/2); 
      g2.setFont(g2.getFont().deriveFont(fontAT)); 
      g2.drawString("Menu", 10, height); 
     } 

     @Override 
     public boolean isBorderOpaque() { 
      return false; 
     } 
    } 
} 
+0

それは本当にクールだ! – jjnguy

関連する問題