نمایش نتایج 1 تا 8 از 8

نام تاپیک: Sort jTable

  1. #1

    Sort jTable

    آیا این خاصیت وجود داره که با کلیک بر روی ستون های jTable اون ستون سورت بشه
    مثل C#‎

  2. #2

    نقل قول: Sort jTable

    فکر کنم منظورتون همون Listview باشه.

    کد زیر یک کلاس که می تونید به جای jtable ازش استفاده کنی


    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;
    import java.util.Arrays;
    import javax.swing.JTable;
    import javax.swing.table.AbstractTableModel;
    import javax.swing.table.DefaultTableModel;
    import javax.swing.table.TableModel;


    public class JListView extends JTable{

    private static class SortTableModel extends AbstractTableModel{

    private TableModel tableModel;
    private int sortCulomn;
    private boolean normalSort;
    private Row[] tableRows;

    private class Row implements Comparable{

    public int index;
    public int compareTo(Object o) {
    Row second=(Row) o;
    Object a=tableModel.getValueAt(index, sortCulomn);
    Object b=tableModel.getValueAt(second.index, sortCulomn);
    if(a instanceof Comparable){

    if(a instanceof String){
    String strA=((String) a).toLowerCase();
    String strB=((String) b).toLowerCase();
    if(normalSort)
    return strA.compareTo(strB);
    else
    return strA.compareTo(strB)*(-1);
    }
    else{
    if(normalSort)
    return ((Comparable) a).compareTo(b);
    else
    return ((Comparable) a).compareTo(b)*(-1);
    }
    }
    else
    return index-second.index;
    }

    }

    public SortTableModel(TableModel model){
    tableModel=model;
    tableRows=new Row[tableModel.getRowCount()];
    for (int i = 0; i < tableRows.length; i++) {
    tableRows[i] = new Row();
    tableRows[i].index=i;
    }

    sortCulomn=-1;
    normalSort=true;
    }

    private void sort(int culomn){
    if(sortCulomn==culomn){
    normalSort=!normalSort;
    }
    else{
    sortCulomn=culomn;
    normalSort=true;
    }
    Arrays.sort(tableRows);
    fireTableDataChanged();
    }

    public int getRowCount() {
    return tableModel.getRowCount();
    }

    public int getColumnCount() {
    return tableModel.getColumnCount();
    }

    public Object getValueAt(int rowIndex, int columnIndex) {
    return tableModel.getValueAt(tableRows[rowIndex].index, columnIndex);
    }

    @Override
    public void setValueAt(Object value,int rowIndex, int columnIndex) {
    tableModel.setValueAt(value, tableRows[rowIndex].index, columnIndex);
    }

    @Override
    public String getColumnName(int columnIndex) {
    return tableModel.getColumnName(columnIndex);
    }

    public void MouseAction(final JTable listView){
    listView.getTableHeader().addMouseListener(new MouseAdapter() {
    @Override
    public void mouseClicked(MouseEvent e) {
    int selectedColumn=listView.columnAtPoint(e.getPoint() );
    int modelColumn = listView.convertColumnIndexToModel(selectedColumn) ;
    sort(modelColumn);
    }
    });
    }
    }

    private SortTableModel model;

    public JListView(Object[][] data,String[] columns) {
    super();
    model=new SortTableModel(new DefaultTableModel(data, columns));
    this.setModel(model);
    model.MouseAction(this);
    }
    }


  3. #3

    نقل قول: Sort jTable

    سلام

    من دارم از نت بینز 6.7 و بصورت ویژوال استفاده می کنم نمی دونم چطوری باید اینو به پروژه اضافه کنم اگه می تونی راهنمایم کن
    تشکر
    آخرین ویرایش به وسیله sg.programmer : سه شنبه 07 مهر 1388 در 21:18 عصر

  4. #4

    نقل قول: Sort jTable

    وقتی که به صورت visual یک jtable رو توی فرم می زاری در اصل یک jscrollpanel به فرمتون اضافه می شه که شامل یک jtable.
    برای حل مشکلت اول jtable رو به صورت visual به فرمت اضافه کن بعداً jscrollpanel مربوط به اون رو پیدا کن (معمولاً اسم شی jscrollpane1 هست) بعد از اون به استفاده از متد setviewportview ، شی ساخته شده از jlistview رو داخل jscrollPanel قرار بده

  5. #5

    نقل قول: Sort jTable

    سلام
    دستتون درد نکنه
    اگه براتون مقدوره یه مثال بزنید
    آخرین ویرایش به وسیله sg.programmer : یک شنبه 10 آبان 1388 در 16:39 عصر

  6. #6

    نقل قول: Sort jTable

    یک نمونه برنامه می تونید قرار دهید

  7. #7

    نقل قول: Sort jTable

    نقل قول نوشته شده توسط alaaaa مشاهده تاپیک
    فکر کنم منظورتون همون Listview باشه.

    کد زیر یک کلاس که می تونید به جای jtable ازش استفاده کنی


    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;
    import java.util.Arrays;
    import javax.swing.JTable;
    import javax.swing.table.AbstractTableModel;
    import javax.swing.table.DefaultTableModel;
    import javax.swing.table.TableModel;


    public class JListView extends JTable{

    private static class SortTableModel extends AbstractTableModel{

    private TableModel tableModel;
    private int sortCulomn;
    private boolean normalSort;
    private Row[] tableRows;

    private class Row implements Comparable{

    public int index;
    public int compareTo(Object o) {
    Row second=(Row) o;
    Object a=tableModel.getValueAt(index, sortCulomn);
    Object b=tableModel.getValueAt(second.index, sortCulomn);
    if(a instanceof Comparable){

    if(a instanceof String){
    String strA=((String) a).toLowerCase();
    String strB=((String) b).toLowerCase();
    if(normalSort)
    return strA.compareTo(strB);
    else
    return strA.compareTo(strB)*(-1);
    }
    else{
    if(normalSort)
    return ((Comparable) a).compareTo(b);
    else
    return ((Comparable) a).compareTo(b)*(-1);
    }
    }
    else
    return index-second.index;
    }

    }

    public SortTableModel(TableModel model){
    tableModel=model;
    tableRows=new Row[tableModel.getRowCount()];
    for (int i = 0; i < tableRows.length; i++) {
    tableRows[i] = new Row();
    tableRows[i].index=i;
    }

    sortCulomn=-1;
    normalSort=true;
    }

    private void sort(int culomn){
    if(sortCulomn==culomn){
    normalSort=!normalSort;
    }
    else{
    sortCulomn=culomn;
    normalSort=true;
    }
    Arrays.sort(tableRows);
    fireTableDataChanged();
    }

    public int getRowCount() {
    return tableModel.getRowCount();
    }

    public int getColumnCount() {
    return tableModel.getColumnCount();
    }

    public Object getValueAt(int rowIndex, int columnIndex) {
    return tableModel.getValueAt(tableRows[rowIndex].index, columnIndex);
    }

    @Override
    public void setValueAt(Object value,int rowIndex, int columnIndex) {
    tableModel.setValueAt(value, tableRows[rowIndex].index, columnIndex);
    }

    @Override
    public String getColumnName(int columnIndex) {
    return tableModel.getColumnName(columnIndex);
    }

    public void MouseAction(final JTable listView){
    listView.getTableHeader().addMouseListener(new MouseAdapter() {
    @Override
    public void mouseClicked(MouseEvent e) {
    int selectedColumn=listView.columnAtPoint(e.getPoint() );
    int modelColumn = listView.convertColumnIndexToModel(selectedColumn) ;
    sort(modelColumn);
    }
    });
    }
    }

    private SortTableModel model;

    public JListView(Object[][] data,String[] columns) {
    super();
    model=new SortTableModel(new DefaultTableModel(data, columns));
    this.setModel(model);
    model.MouseAction(this);
    }
    }

    لطفا یک مثال برای کار با این ارائه کنید

  8. #8

    نقل قول: Sort jTable

    jtable.setAutoCreateRowSorter(true);

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •