الوقت/التاريخ الآن هو الأحد أبريل 28, 2024 3:55 pm
1 نتيجة بحث عن JScrollPane
تجميد اعمدة فى JTable اثناء تمرير jScrollBar
عادة ما يتم عرض #JTable في #JScrollPane. يسمح هذا للجدول بالتمرير عموديًا أو أفقيًا كما هو مطلوب. يؤدي التمرير الأفقي إلى التمرير لكل الأعمدة في الجدول. في بعض الحالات ، قد ترغب في منع العمود (الأعمدة) الأمامية في الجدول من التمرير.لا يدعم JTable هذه الوظيفة ، لكن بالاقتران مع #JScrollPane ، يمكننا تحقيق الوظيفة المطلوبة. يتم استخدام فئة #FixedColumnTable كفئة راحة للتعامل مع الجدول والتمرير. وراء الكواليس ، يتم تقسيم الجدول الرئيسي إلى قسمين. سيعرض الجدول الثاني الأعمدة الثابتة ويضاف إلى رأس صف أجزاء التمرير. سيقوم هذا الجدول الثابت بمشاركة #TableModel و #SelectionModel مع الجدول الرئيسي.
ستقوم بإنشاء الفئة #FixedColumnTable بمجرد إضافة #TableModel إلى الجدول الرئيسي الخاص بك وإضافة الجدول الرئيسي إلى جزء التمرير. ستكون النتيجة عبارة عن جزء تمرير يحتوي على جدولين ، يمكن تمرير جدول واحد فقط أفقيًا. تم استخدام الكود التالي لإنشاء جزء التمرير في الصورة أدناه:
فيما ادناه الشفرة الخاصة بالفئة
- الكود:
import java.beans.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.table.*;
public class FixedColumnTable implements ChangeListener, PropertyChangeListener
{
private JTable main;
private JTable fixed;
private JScrollPane scrollPane;
public FixedColumnTable(int fixedColumns, JScrollPane scrollPane)
{
this.scrollPane = scrollPane;
main = ((JTable)scrollPane.getViewport().getView());
main.setAutoCreateColumnsFromModel( false );
main.addPropertyChangeListener( this );
// استخدم الجدول الموجود لإنشاء جدول جديد لمشاركة نموذج البيانات و ListSelectionModel
int totalColumns = main.getColumnCount();
fixed = new JTable();
fixed.setAutoCreateColumnsFromModel( false );
fixed.setModel( main.getModel() );
fixed.setSelectionModel( main.getSelectionModel() );
fixed.setFocusable( false );
// أزل الأعمدة الثابتة من الجدول الرئيسي وأضفها إلى الجدول الثابت
for (int i = 0; i < fixedColumns; i++)
{
TableColumnModel columnModel = main.getColumnModel();
TableColumn column = columnModel.getColumn( 0 );
columnModel.removeColumn( column );
fixed.getColumnModel().addColumn( column );
}
// أضف الجدول الثابت إلى جزء التمرير
fixed.setPreferredScrollableViewportSize(fixed.getPreferredSize());
scrollPane.setRowHeaderView( fixed );
scrollPane.setCorner(JScrollPane.UPPER_LEFT_CORNER, fixed.getTableHeader());
// Synchronize scrolling of the row header with the main table
scrollPane.getRowHeader().addChangeListener( this );
}
/*
* إرجاع الجدول الذي يتم استخدامه في رأس الصف
*/
public JTable getFixedTable()
{
return fixed;
}
//
// تطبيق ChangeListener
//
public void stateChanged(ChangeEvent e)
{
// مزامنة شريط التمرير جزء التمرير مع رأس الصف
JViewport viewport = (JViewport) e.getSource();
scrollPane.getVerticalScrollBar().setValue(viewport.getViewPosition().y);
}
//
// تطبيق الحدث PropertyChangeListener
//
public void propertyChange(PropertyChangeEvent e)
{
// حافظ على تزامن الجدول الثابت مع الجدول الرئيسي
if ("selectionModel".equals(e.getPropertyName()))
{
fixed.setSelectionModel( main.getSelectionModel() );
}
if ("model".equals(e.getPropertyName()))
{
fixed.setModel( main.getModel() );
}
}
}
ويتم استخدام الفئة التى تم إنشائها اعلاه على النحو التالى :
- الكود:
JTable table = new JTable(20, 10);
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
table.getColumnModel().getColumn(0).setPreferredWidth(50);
table.getColumnModel().getColumn(1).setPreferredWidth(100);
JScrollPane scrollPane= new JScrollPane( table );
FixedColumnTable fct = new FixedColumnTable(2, scrollPane);
المصدر https://tips4java.wordpress.com/2008/11/05/fixed-column-table/
- في الخميس نوفمبر 28, 2019 5:52 pm
- ابحث في: واجهة المستخدم الرسومية Java Swing
- موضوع: تجميد اعمدة فى JTable اثناء تمرير jScrollBar
- المساهمات: 0
- مشاهدة: 643
الخميس أبريل 25, 2024 8:56 pm من طرف moslema_r
» شركة مكافحة حشرات في راس الخيمة
الخميس أبريل 25, 2024 8:34 pm من طرف moslema_r
» تطبيقIncogniton لإدارة ملفات تعريف متعددة للمتصفح
الأربعاء أبريل 24, 2024 3:51 pm من طرف زاكااا
» افضل شركة مكافحة النمل الابيض بالرياض
الإثنين أبريل 22, 2024 9:41 pm من طرف moslema_r
» Exemplary Сasual Dating - Verified Women
الخميس أبريل 18, 2024 9:18 pm من طرف wdqwd
» رش الدفان بالرياض
الخميس أبريل 18, 2024 7:11 pm من طرف moslema_r
» شركة تنظيف خزانات الشارقة
الخميس أبريل 18, 2024 6:57 pm من طرف moslema_r
» شركة مكافحة الفئران بالرياض
الإثنين أبريل 15, 2024 8:23 pm من طرف moslema_r
» افضل شركة كشف تسربات المياه بالباحة
الخميس أبريل 04, 2024 7:02 am من طرف gmalnagy
» ساعدوني وفهموني help me
الجمعة مارس 29, 2024 8:37 am من طرف linesoft