1

我试图->用 ASCII 艺术制作箭头,但我的 JLabel 不合作。它给了它这样的外观:

不好->

这使它看起来像 _> 或其他东西。我如何解决它?

SSCCE:

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.WindowConstants;

public class Test {
    public static void main(String[] args) {
        JFrame j = new JFrame("TEST");
        j.add(new JLabel(" -> "));
        j.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
        j.pack();
        j.setSize(j.getWidth() * 3, j.getHeight() * 3);
        j.setLocationRelativeTo(null);
        j.setVisible(true);
    }
}
4

3 回答 3

3

-相对于 的位置>取决于字体。您必须找到另一种方法来执行此操作,或者使用您希望的放置方式的字体。

等宽字体往往-放在旁边很舒服,但这>不能保证。例如,现在在 SO 上,->看起来与 -> (对我来说)大致一样错位。

Russell Zahniser在评论中的一个更好的答案(如果他将其作为答案发布,我将删除这个),是使用(许多)Unicode 箭头之一,例如\u2192. unicode.org 网站上有一个有用的列表。

于 2014-05-14T16:55:10.790 回答
1

正如其他人指出的那样,您至少必须使用“等宽”字体。虽然这并不一定意味着 的垂直对齐方式-会匹配>,但对于标准字体来说应该如此。无论如何,“等宽”的属性将确保所有字符的宽度相等,这对于 ASCII 艺术至关重要。

import java.awt.Font;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.WindowConstants;

public class Test
{
    public static void main(String[] args)
    {
        JFrame j = new JFrame("TEST");

        JLabel label = new JLabel(" -> ");
        label.setFont(new Font("Monospaced", Font.PLAIN, 12));

        j.add(label);
        j.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
        j.pack();
        j.setSize(j.getWidth() * 3, j.getHeight() * 3);
        j.setLocationRelativeTo(null);
        j.setVisible(true);
    }
}
于 2014-05-14T16:58:18.733 回答
0

和...之间的不同

->

->

是字体。如果这是 ASCII 艺术,您应该通过setFont. 就像是:

JFrame j = new JFrame("TEST");
JLabel label = new JLabel(" -> ");
label.setFont(new Font("Courier New", Font.PLAIN, 12)));
j.add(label);
...
于 2014-05-14T16:55:29.523 回答