Java форматирующие строки в JList - PullRequest
1 голос
/ 26 декабря 2011

Через 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

Как вы можете видеть, что это не очень читабельно, я хочу вывести> конденсатор ... для выравнивания в одном столбце независимо от длины строки xxxxxx. В любом случае, максимальная длина строк xxxx составляет 47 символов, если это поможет.

Ответы [ 2 ]

2 голосов
/ 26 декабря 2011

Попробуйте это:

struct.addElement(String.format("> %47s Capacitor: %s CPU: %s", module, module_cap, module_cpu));
1 голос
/ 26 декабря 2011

Попробуйте:

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 символов длины, и они будут дополнены пробелами слева.Все детали "Конденсатор ..." будут выровнены в одном столбце.

...