Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8128128

Confusing sorting in TableView control

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: P2
    • Resolution: Won't Fix
    • Affects Version/s: fx2.0
    • Fix Version/s: fx2.0
    • Component/s: javafx
    • Labels:
    • Environment:

      JavaFx 2.0 b38

      Description

      Code to reproduce:
      package javafxtable;

      import javafx.application.Application;
      import javafx.collections.FXCollections;
      import javafx.collections.ObservableList;
      import javafx.scene.Scene;
      import javafx.scene.control.TableColumn;
      import javafx.scene.control.TableView;
      import javafx.stage.Stage;

      public class JavaFXTable extends Application {

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

          @Override
          public void start(Stage primaryStage) {
              primaryStage.setTitle("Table issues");
              ObservableList<Record> records = FXCollections.observableArrayList();
              for (int i = 1; i <= 100; i++) {
                  Record r = new Record((long)i, "Name "+i);
                  records.add(r);
              }
              Collections.shuffle(records);
              TableView<Record> root = new TableView<Record>();
              TableColumn<Long> columnId = new TableColumn<Long>("ID");
              columnId.setProperty("id");
              TableColumn<String> columnName = new TableColumn<String>("Name");
              columnName.setProperty("name");
              root.getColumns().addAll(columnId, columnName);
              root.setItems(records);
              Scene scene = new Scene(root);
              primaryStage.setScene(scene);
              primaryStage.setVisible(true);
          }

          public static class Record {
              private final Long id;
              private final String name;
              public Record(Long id, String name) {
                  this.id = id;
                  this.name = name;
              }
              public Long getId() {
                  return id;
              }
              public String getName() {
                  return name;
              }
          }
      }


      Steps:
      1. initial state - see picture1
      2. click on first column - ascendant sorting by first column see picture2
      3. click on first column - descendant sorting by first column see picture3
      4. click on first column - unsorted (initial state) see picture4
      Expected: initial state (unsorted)
      Actual: last sort order - bug.

        Attachments

        1. picture1.png
          picture1.png
          20 kB
        2. picture2.png
          picture2.png
          20 kB
        3. picture3.png
          picture3.png
          21 kB
        4. picture4.png
          picture4.png
          24 kB

          Activity

            People

            • Assignee:
              jgiles Jonathan Giles
              Reporter:
              iyalovyyjfx Illya Yalovyy (Inactive)
            • Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:
                Imported: