Java 使线条处于相同的位置-“\";
我试图让所有的观点都处于相同的位置。 但只有我能让它看起来像这样。 你能给我一些使它看起来更整洁的主意吗Java 使线条处于相同的位置-“\";,java,regex,string,eclipse,swing,Java,Regex,String,Eclipse,Swing,我试图让所有的观点都处于相同的位置。 但只有我能让它看起来像这样。 你能给我一些使它看起来更整洁的主意吗 下面这三个文本需要另一个“\t”。之所以会出现这种情况,是因为第一行左侧的文本太长,与第二列重叠,下一部分(制表符之后)必须写入下一个“单元格”。您在这里有几个选项: 创建一个JTextArea(看起来你正在这么做) 为文本区域指定单间距字体 然后使用String.format(“%-20s:%20s%n”,text1,text2)”显示格式化的字符串(数字可能会有所不同),以便正确对齐
下面这三个文本需要另一个
“\t”
。之所以会出现这种情况,是因为第一行左侧的文本太长,与第二列重叠,下一部分(制表符之后)必须写入下一个“单元格”。您在这里有几个选项:
- 创建一个JTextArea(看起来你正在这么做)
- 为文本区域指定单间距字体
- 然后使用
String.format(“%-20s:%20s%n”,text1,text2)”显示格式化的字符串
(数字可能会有所不同),以便正确对齐文本
- 使用JTable保存和显示表格数据
- 创建一个网格,每行包含一个JLabel和一个JTextField,
- 使用GridBagLayout设置零部件放置的格式
字符串
public static void main(String[] args) {
String line1 = "Importe a pagar ";
String line2 = "Descuento ";
String line3 = "Importe ";
String line4 = "Obsequio ";
String[] correctedStrings = setCorrectAmountOfTabs(line1, line2, line3, line4);
Arrays.stream(correctedStrings).map(line -> line + " : 50").forEach(System.out::println);
}
private static String[] setCorrectAmountOfTabs(String... lines) {
if (lines == null || lines.length == 0) return;
int lengthOfTab = 4;
int targetAmount = Arrays.stream(lines)
.map(line -> line.length() / lengthOfTab)
.max(Integer::compare)
.get();
return Arrays.stream(lines)
.map(line -> {
int currentAmount = line.length() / lengthOfTab;
String tabs = IntStream.rangeClosed(0, targetAmount - currentAmount)
.mapToObj(i -> "\t")
.collect(Collectors.joining());
return line + tabs;
})
.toArray(String[]::new);
}
此方法的执行给出以下结果
Importe a pagar : 50
Descuento : 50
Importe : 50
Obsequio : 50
Importe a pagar : 50
Descuento : 50
Importe : 50
Obsequio : 50
Adding a very long line to it : 50
然后,您可以操作输出字符串数组,以便在组件内部使用它。这就保证了无论你最长的字符串长度如何,你都会有同样的行为
如果我向它添加一个额外的行,它将给出以下结果
Importe a pagar : 50
Descuento : 50
Importe : 50
Obsequio : 50
Importe a pagar : 50
Descuento : 50
Importe : 50
Obsequio : 50
Adding a very long line to it : 50
另一个想法是:在较短的字符串中添加空格,以便\t在同一列中是的,这取决于另一列必须位于的位置。\t
对于所有情况下的正确排列来说,单独使用太愚蠢了。您需要使用字符串的长度正确计算偏移量,然后用空格填充它。请参阅(您可以使用与String#format
相同的格式语法,单空格字体使操作更简单)。