java качели радио кнопки с вертикальным текстом - PullRequest
0 голосов
/ 07 июля 2019

Попытка получить радио-кнопки, которые похожи на это в Java с Swing:

 *  *  *
 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);
        }
    }
}

1 Ответ

1 голос
/ 07 июля 2019

Вы можете использовать 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...