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. css垂直方向文本
- 2. 旁边垂直线添加文本matplotlib
- 3. iTextSharp - 添加垂直文本框
- 4. JMenu中的图标和文本的垂直布局
- 5. 向图中添加垂直线
- 6. 如何向matplotlib添加垂直线?
- 7. 向ggplot添加一个垂直线条
- 8. 向JPanel添加垂直滚动功能
- 9. 向ggplot2栏添加垂直线图
- 10. Flexbox的 - 水平取向垂直文本
- 11. 垂直对齐SlickGrid头垂直文本
- 12. 垂直文本旁边的垂直线
- 13. 在垂直线上垂直写文本
- 14. 垂直中心垂直文本
- 15. 垂直文本android
- 16. 添加垂直头到QTreeView
- 17. 添加JavaScript阵列垂直
- 18. Dimple JS添加垂直线
- 19. 向垂直列中的文本文件写入向量
- 20. 在JMenu中添加图标和文字
- 21. 添加一个UILabel到的UITableViewCell - 文本被裁剪垂直
- 22. 如何将文本添加到垂直线d3js
- 23. 如何在标题下垂直添加文本
- 24. 无法在iOS中垂直添加文本字段?
- 25. 如何在html中添加垂直文本对齐href?
- 26. 将JMenu添加到JPanel
- 27. 垂直对齐文本
- 28. CSS:垂直对齐文本?
- 29. 垂直twolinesandbitmap中心文本
- 30. 垂直对齐文本div
潜在的应答者,请[阅读](http://stackoverflow.com/a/9382795/714968) – mKorbel 2012-02-22 11:15:04
@mKorbel这是很难的主题编码。我更改了源代码:当然是,P – 2012-02-22 12:14:49