我试图用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);
}
}
答案 0 :(得分:3)
-
相对于>
的位置取决于字体。您必须找到另一种方法来执行此操作,或使用字体,其中展示位置是您喜欢的方式。
等宽字体倾向于让-
放在>
旁边,但不能保证。例如,就现在SO而言,->
看起来大致错误对齐 - > (对我而言)。
更好的答案,Russell Zahniser在评论中(如果他将其作为答案发布,我将删除此内容),就是使用其中一个(许多)Unicode箭头,例如\u2192
。这是一个有用的列表here on the unicode.org site。
答案 1 :(得分:1)
正如其他人所指出的,你必须使用" Monospaced"字体,至少。虽然这不必然意味着-
的垂直对齐方式与>
匹配,但对于标准字体应该如此。在任何情况下,属于"等宽的"将确保所有字符的 width 相等,这对于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);
}
}
答案 2 :(得分:0)
之间的区别
->
和
- >
是字体吗?如果这是ASCII艺术,你应该通过setFont
为你的JLabel使用等宽字体(Consolas,Courier New,Monaco ......)。类似的东西:
JFrame j = new JFrame("TEST");
JLabel label = new JLabel(" -> ");
label.setFont(new Font("Courier New", Font.PLAIN, 12)));
j.add(label);
...