【问题标题】:Java Swing text is messed up inside Text AreaJava Swing 文本在文本区域内混乱
【发布时间】:2015-10-25 22:36:54
【问题描述】:

我已将查询结果格式化为 MySql 的样式,所有的 +----+。

在 Eclipse 中,字符串看起来就像我想要的那样,但在我的 GUI 中,它被搞砸了:

知道如何使 JTextArea 中的文本与 eclipse 中的文本相同吗?

【问题讨论】:

  • 使用JTable 而不是文本区域..
  • 使用固定宽度的字体。见:stackoverflow.com/questions/16279781/…
  • JTable 是不错的选择,但问题不是所有查询都返回表......只是返回 ResultSet 的那些。我也可以得到一个整数或异常。关于电子邮件,它们是假的,欢迎您使用它们:)
  • 1) 提示:添加@Neal4114(或重要的@)以通知此人有新评论。 2) “JTable 是不错的选择,但问题不是所有查询都返回表...” 然后解决方案是在一张卡中使用 CardLayoutJTable,并且组件更好适合其他卡中接收的输出。

标签: java swing user-interface awt jtextarea


【解决方案1】:

文字没有乱七八糟,只是使用了非等宽字体,因此并非所有字符的宽度都相同。

只需对您的 TextArea 执行此操作:

textArea.setFont(new Font("Courier New", Font.PLAIN, 12));

【讨论】:

  • "只需对您的 TextArea 执行此操作:" 1) 如问题所述,这是JTextArea 2) new Font("Courier New", Font.PLAIN, 12) 最好是new Font(Font.MONOSPACED, Font.PLAIN, 12)跨平台可靠性和编译时检查。 3)正如我的评论中所表达的那样,有一个更好的解决方案..
  • 冷静一点。这个解决方案很好,可以解决问题。它适用于我所知道的任何操作系统。 JTable 不是更好的解决方案,因为问题不是如何制作表格,而是如何使文本看起来像 Eclipse。
  • 为什么?这是正确的解决方案!!!我说的是TextArea,但是JTextArea当然有一个setFont()方法。
  • "..不是如何制作表格,而是如何使文本看起来像 Eclipse。" 所以如果问题是 "我该如何拍摄自己在脚下?” 你会提供指示吗?见Is “Don't do it” a valid answer?(是)。
  • 你的答案没有错,但@AndrewThompson 是正确的;正如here 建议的那样,Font.MONOSPACED 将根据重量、斜率和语言环境的变化,引出平台首选的固定宽度字体。 Renato:因为使用空格进行格式化充其量是脆弱的,所以使用引用here 的策略模式来选择正确的渲染器; JTable 将避免必须设计自己的渲染器选择方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-09-03
  • 1970-01-01
  • 2014-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-11
相关资源
最近更新 更多