带有垂直文本的 java swing 单选按钮

标签 java swing

尝试使用 swing 在 Java 中获得如下所示的单选按钮:

 *  *  *
 O  A  O
 F  U  N
 F  T
    O

...其中 * 是单选按钮

这些字母可以正面朝上,也可以侧面朝上,我不在乎。我只想将顶部的按钮和每个按钮下方的字母放在一个狭窄的列中。

尝试在paint()方法中旋转图形,但当我将鼠标悬停在它上面时,它会变得困惑,重新绘制按钮而不旋转。看来我需要的是类似 BoxLayout 的东西,但它也会旋转 90 度。或者可能是 JPanel 和按钮之间的另一层。

public class OffAutoOn extends JPanel {

    public OffAutoOn ()
    {
        JRadioButton b1 = new JRadioButton ("OFF");
        JRadioButton b2 = new JRadioButton ("AUTO");
        JRadioButton b3 = new JRadioButton ("ON");

        ButtonGroup bg = new ButtonGroup ();
        bg.add (b1);
        bg.add (b2);
        bg.add (b3);

        setLayout (new BoxLayout (this, BoxLayout.Y_AXIS));
        add (b1);
        add (b2);
        add (b3);
    }

    @Override
    public void paint (Graphics g)
    {
        Graphics2D g2d = (Graphics2D) g;
        AffineTransform at = g2d.getTransform ();
        try {
            int w = getWidth ();
            int h = getHeight ();
            g2d.rotate (Math.PI / 2, w / 2, h / 2);
            super.paint (g);
        } finally {
            g2d.setTransform (at);
        }
    }
}

最佳答案

您可以使用 HTML 为按钮创建垂直文本,然后可以更改文本相对于图标的默认位置。

例如:

String text = "<html>A<br>u<br>t<br>o</html";
JRadioButton button = new JRadioButton( text );
button.setHorizontalTextPosition(JRadioButton.CENTER);
button.setVerticalTextPosition(JRadioButton.BOTTOM);

关于带有垂直文本的 java swing 单选按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56923815/

相关文章:

java - 在 case 标签中使用 boolean 表达式的 Switch 语句

java - 为什么需要编写获取自定义类的对象的类型变量?

java - SelectManyCheckbox 中的 JSF/Primefaces 枚举转换器

java - 在 JTextPane 中禁用自动换行

java - 错误的组件(在单独的 JPanel 类中)获得焦点

java - 线程中的异常 "main"java.lang.NumberFormatException :

java - NoSuchMethodError : org. hibernate.SessionFactory.openSession()

java - 更改单个 JOptionPane 大小

java - 我的 JScrollPane 滚动到我的 JTable 的倒数第二行,而不是最后一行

java - 当所有 Activity 线程都是守护进程时,为什么 EDT 不关闭?