Заполнение строки пробелами в ListView - PullRequest
0 голосов
/ 24 мая 2018

пожалуйста, не могли бы вы мне помочь?

У меня есть просмотр списка в Java в ObservableList или ArrayList, у меня есть строки вроде CTAudSvc 2760 ctfmon 6176 dllhost 6464 dllhost 14656 DLLML 10920 DMedia 6768 dwm 1104 explorer 6492 chrome 2964

, но когда я помещаю его в просмотр списка, я вижу что-то вроде этого:

CTAudSvc 2760 ctfmon 6176 dllhost 656 DLLML 10920 DMedia 6768 dwm 1104 explorer 6492 chrome 2964

В коде у меня нет ничего особенного, поэтому, если вы знаете, что заставляет игнорировать некоторые пробелы, пожалуйста, помогите мне.

ArrayList<String> processListUnsorted = new ArrayList<String>();
...
Sting input...
processListUnsorted.add(input.trim());
...
List<String> sortedApps = processListUnsorted.stream() .sorted(String.CASE_INSENSITIVE_ORDER)
.collect(Collectors.toList());
...
ObservableList<String> sortedAppsFinal = FXCollections.observableArrayList(sortedApps);
...
somelistview.setItems(sortedAppsFinal);</code>

1 Ответ

0 голосов
/ 24 мая 2018

Вот один из способов достижения этого, но я бы выбрал подход James_D.

Вы должны изучить использование Cell Factory.Разделить строку.Тогда используйте HBox.Используйте две метки в HBox.Установите первую метку на HBox.setHgrow(label, "ALWAYS"); и setMaxWidth(Double.MAX_VALUE);

import java.util.ArrayList;
import java.util.List;
import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.ListCell;
import javafx.scene.control.ListView;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Priority;
import javafx.stage.Stage;

public class ListViewExperiments extends Application
{

    @Override
    public void start(Stage primaryStage) throws Exception
    {
        primaryStage.setTitle("ListView Experiment 1");

        List<String> data = new ArrayList();
        data.add("CTAudSvc                2760");
        data.add("ctfmon                  6176");
        data.add("dllhost                 6464");

        ListView listView = new ListView();
        listView.setItems(FXCollections.observableArrayList(data));
        listView.setCellFactory(lv -> new ListCell<String>()
        {
            Label label = new Label();              
            Label label2 = new Label();
            HBox hBox = new HBox(label, label2);

            @Override
            public void updateItem(String item, boolean empty)
            {
                super.updateItem(item, empty);
                if (empty) {
                    setGraphic(null);
                }
                else {
                    label.setMaxWidth(Double.MAX_VALUE);
                    HBox.setHgrow(label, Priority.ALWAYS);
                    String[] splitString = item.split("\\s+");
                    label.setText(splitString[0]);
                    label2.setText(splitString[1]);
                    setGraphic(hBox);
                }
            }
        });

        HBox hbox = new HBox(listView);

        Scene scene = new Scene(hbox, 300, 120);
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    public static void main(String[] args)
    {
        Application.launch(args);
    }
}

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...