2015-12-14 81 views
1

我很想知道在网格中打印文本的配方布局格式或表格布局格式,其中输入文本在列|行类型布局中垂直对齐 - (它可以是任何语言,我有兴趣在配方)以对齐的网格格式打印纯文本

例如假设我有一个字符串数组代表我行

String[] s = new String[]{"Adele","Taylor","Katty","Beyonce","Mariah"}; 
String[] s1 = new String[]{"Java","Android","Ruby","Pascal","Python"}; 
String[] s2 = new String[]{"Ronaldo","Ibrahimovic","Tevez","Rooney","Ronaldhino"}; 
String[] s3 = new String[]{"Stackoverflow","Facebook","Twitter","Amazon","Scrybasms"}; 

,我需要打印到控制台/文本文件/ etc表看起来像这样的格式

Adele     Taylor    Katty      Beyonce        Mariah 
Java     Android    Ruby       Pascal         Python 
Ronaldo    Ibrahimovic   Tevez      Rooney         Ronaldhino 
Stackoverflow   Facebook    Twitter      Amazon         Scrybasms          

但您可以看到它们未正确对齐;在GUI应用程序,这是它的外观 enter image description here

,并在我的日食

enter image description here

他们都有不同的路线,我不知道为什么,所以我想实现的一般更好的方法是什么我想要。感谢

编辑

谢谢大家,我已经用最词汇出现“MonoSpace无”解决它既评论者和回答者。 :)

enter image description here

+2

这是不可能的,因为你不知道使用哪种字体来显示文本(对于文本文件,它取决于显示它的程序,甚至程序设置 - 你已经在问题中已经演示过了)。在gui库的情况下,您可以设置字体或确定字体,并使用它的属性来测量文本宽度(没有担保甚至可以使用给定字体精确对齐(除了等宽字体)。) – fabian

+1

I在这种情况下,使用'Table'更合适。 –

+0

@fabian我现在正在尝试它会让你知道最新情况,谢谢,如果我能得到它的工作,将再次感谢你;希望你的前三个单词不是意味着他们的声音:) – Elltz

回答

2

eclipse,它的单宽字体,喜欢这里:

aaaa bbbb cccc dddd 
eeee ffff gggg hhhh 
iiii jjjj kkkk llll 

在您的应用程序,它不是单声道空间字体,喜欢这里:

aaaa bbbb cccc

dddd eeee ffff

GGGG HHHH IIII

JJJJ KKKK LLLL

所以,现在你明白为什么它在Eclipse正确对齐,但在你的应用程序失败。

+0

谢谢你,你,你非常欢迎先生,谢谢 – Elltz

+0

@Elltz欢迎:)如果没有更多的问题在这里,最好将其中一个答案设置为公认。 – Sayakiss

1

使用单间隔字体并将文本与空格对齐。

或者为每一列文本使用单独的UI元素(文本框)。然后,每一列将独立于其他文本在本地对齐它的文本。

+0

嗯,这将是昂贵的先生,你不觉得?如果我要将整个节点作为文本显示,那么它需要像一个功能一样?例如像在我的文本显示等找到东西等任何提示先生? – Elltz

+0

如果要扩展搜索等功能,可以定义由几个文本框(列)组成的自己的文本元素,然后将感兴趣的功能转发给每个内部文本框。您还可以使用此自定义元素来管理文本(即插入元素时,不要只是按下该列中的文本,而是重新排列所有元素以使其看起来像您所希望的那样)。 – Sorin

+0

推出自己的自定义元素总是更昂贵。但是,如果默认的没有做你想要的,你可以接受它或实现你自己的(或雇用某人为你做)。 – Sorin

1

大多数语言都有一个pad功能,它需要一个字符串并用空格填充,直到达到所需的长度。如果他们不支持这一点,他们至少支持C字符串格式,它允许诸如“%1 $ 10s”之类的东西(这将在字符串的前面放置10个空格)。

这是一种更容易的方法来将东西填充到特定的长度,但它仍然需要单色空间字体才能看起来正确。

+0

谢谢先生。是非常有帮助的 – Elltz