尝试使用 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/