3
A
回答
0
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 2012-03-02 17:14:23
相關問題
- 1. 旁邊垂直線添加文本matplotlib
- 2. JMenu中的圖標和文本的垂直佈局
- 3. 向ggplot添加一個垂直線條
- 4. 向ggplot2欄添加垂直線圖
- 5. 如何向matplotlib添加垂直線?
- 6. Flexbox的 - 水平取向垂直文本
- 7. 垂直文本旁邊的垂直線
- 8. 垂直對齊SlickGrid頭垂直文本
- 9. Dimple JS添加垂直線
- 10. 添加垂直頭到QTreeView
- 11. 添加一個UILabel到的UITableViewCell - 文本被裁剪垂直
- 12. 如何將文本添加到垂直線d3js
- 13. 如何在標題下垂直添加文本
- 14. 將JMenu添加到JPanel
- 15. 多格與垂直文本
- 16. 抵銷文本垂直
- 17. jQuery垂直文本滾動
- 18. 繪製垂直文本()
- 19. 垂直文本與jQuery
- 20. UITextView文本垂直對齊
- 21. Primefaces列垂直文本
- 22. ImageMagick:垂直居中文本?
- 23. 垂直排列文本
- 24. CSS:垂直對齊文本?
- 25. 垂直對齊文本
- 26. 垂直居中文本
- 27. UILabel垂直設置文本
- 28. CSS - 垂直對齊文本
- 29. 垂直文本滾動jQuery
- 30. CSS垂直居中文本
潛在的應答者,請[閱讀](http://stackoverflow.com/a/9382795/714968) – mKorbel 2012-02-22 11:15:04
@mKorbel這是很難的主題編碼。我更改了源代碼:當然是,P – 2012-02-22 12:14:49