JList中的Java格式化字符串

时间:2011-12-26 15:51:07

标签: java swing jlist renderer

3小时之后,没有运气丝毫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
  4. 正如您所看到的那样,我想要输出>无论xxxxxx字符串长度如何,电容器都要在同一列中对齐。无论如何,如果有帮助,xxxx字符串的最大长度为47个字符。

2 个答案:

答案 0 :(得分:2)

试试这个:

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

答案 1 :(得分: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个长度的字符,并且它们将在左侧填充白色空格。所有“Capacitor ...”部件将在同一列中对齐。