JList中的Java格式化字符串

问题描述 投票:1回答:2

[String.format()没有运气的小时...我转向你。无论如何,我有一个用新条目填充的JList,下面是代码:

private void addModule(final JList browse, final JList select){
    browse.addMouseListener(new MouseListener(){
        @Override
        public void mouseClicked(MouseEvent e) {
            String addable = browse.getSelectedValue().toString();
            if(e.getClickCount() == 2 && getSelectedTower() != null && addable.charAt(0) == ' '){
                String data[] = new EPTModule_Model().moduleData(addable.trim());
                String module = data[0];
                String module_cap = data[1];
                String module_cpu = data[2];
                struct.addElement("> " + module + "Capacitor:" + module_cap + "CPU:" + module_cpu);
                select.setModel(struct);
                setSelectedModules(1);
            } else if (e.getClickCount() == 2 && getSelectedTower() == null){
                new EPTEvent_Model().eventNoTowerSelected();
            }
        }
        @Override
        public void mousePressed(MouseEvent e) {}
        @Override
        public void mouseReleased(MouseEvent e) {}
        @Override
        public void mouseEntered(MouseEvent e) {}
        @Override
        public void mouseExited(MouseEvent e) {}
    });
}

无论如何,当我现在将我的应用程序添加到列表中时,它们的长度并不相同,所以我得到如下输出:

  1. xxxxxxxxxxxxxxxxxxxx电容:555 Cpu:10
  2. xxxxxxxxxx电容:555 Cpu:10
  3. xxxxxxxxxxxxxxxxxxxxxxxxxxx电容:555 Cpu:10

如您所见,我想输出的不是很可读>电容器...在同一列中对齐,而与xxxxxx字符串长度无关。无论如何,如果有帮助,xxxx字符串的最大长度为47个字符。

java swing jlist renderer
2个回答
2
投票

尝试一下:

struct.addElement(String.format("> %47s Capacitor: %s CPU: %s", module, module_cap, module_cpu));

1
投票

尝试一下:

String part1 = String.format("%47s", "xxxxxxxxxxxxxxxxxxxx");
String line1 = part1 + " Capacitor: 555 Cpu: 10";

String part2 = String.format("%47s", "xxxxxxxxxx");
String line2 = part2 + " Capacitor: 555 Cpu: 10";

System.out.println(line1);
System.out.println(line2);

无论“ xxx”部分的长度如何,它们始终具有47个字符的长度,并且将在左侧填充空白。所有“电容器...”部分将在同一列中对齐。

© www.soinside.com 2019 - 2024. All rights reserved.