www.91084.com

GVKun编程网logo

在JScrollPane上设置滚动条(jscrollpane滚动条位置)

8

如果您想了解在JScrollPane上设置滚动条的相关知识,那么本文是一篇不可错过的文章,我们将对jscrollpane滚动条位置进行全面详尽的解释,并且为您提供关于(二)美化滚动条-JScrollP

如果您想了解在JScrollPane上设置滚动条的相关知识,那么本文是一篇不可错过的文章,我们将对jscrollpane滚动条位置进行全面详尽的解释,并且为您提供关于(二) 美化滚动条 - JScrollPane.js、.Net 中的 AutoScrollPosition 问题 (panel 滚动条的位置设定)、c# – 如何仅使用xaml在scrollviewer中设置滚动条的余量、e822. 监听 JScrollPane 的滚动的有价值的信息。

本文目录一览:

在JScrollPane上设置滚动条(jscrollpane滚动条位置)

在JScrollPane上设置滚动条(jscrollpane滚动条位置)

我有这个JTextPane(包裹在JScrollPane)中,并有个HTMLEditorKit。的内容JTextPane是简单的HTML,其中包含使用img标签嵌入的某些图片(本地文件)。问题是,当您加载时JTextPane,需要花一秒钟的时间来加载,然后在页面底部显示滚动条。如果我做:

JTextPane text = new JTextPane();
JScrollPane scroll = new JScrollPane(text);
// do some set up...
scroll.getVerticalScrollBar().setValue(0);

它会暂时设置滚动条,然后出现另一个主题(大概负责加载图像)并将滚动条打回到底部。我尝试添加:

((AbstractDocument)text.getDocument()).setAsynchronousLoadPriority(-1);

但这并没有解决。有没有办法从任一得到一个事件text.getDocument()text当窗格完成加载,这样我可以设置滚动条,然后会通知我吗?另一种选择是,我将另一个线程设置为等待一秒钟左右,然后设置滚动条,但这是一个糟糕的技巧。

你的建议?

(二) 美化滚动条 - JScrollPane.js

(二) 美化滚动条 - JScrollPane.js

JScrollPane资料

  • Github
  • 参考地址

Api查看

由于官网Api地址不能访问,查看Api只能去Github上下载对应的案例。或查看插件库的文档 - jQ22对应的案例

引入文件

<link type="text/css" href="style/jquery.jscrollpane.css" rel="stylesheet" media="all" />
<script type="text/javascript" src="js/jquery.jscrollpane.min.js"></script> 

DOM结构

<div>
  	...内容           
</div>

基本使用

$(function() {
    var element = $(''.scroll-pane'').jScrollPane();
    // 获取特定滚动条窗口的API参考,可以访问应用元素中的jsp变量
    var api = element.data(''jsp'');
});

参数选项

$(''.scroll-pane'').jScrollPane(
    showArrows - boolean (default false)//显示滑杆两边的箭头
    maintainPosition - boolean (default true)//保持原位置
    stickToBottom- boolean (default false)//滑到底部
    stickToRight- boolean (default false)//滑到最右边
    autoReinitialise - boolean (default false)//自动加载出现滑杆
    autoReinitialiseDelay - int (default 500)//自动加载的时间延迟
    verticalDragMinHeight - int (default 0)//垂直拖拽的最小高度
    verticalDragMaxHeight - int (default 99999)//处置拖拽的最大高度
    horizontalDragMinWidth - int (default 0)//水平拖拽的长度
    horizontalDragMaxWidth - int (default 99999)//水平拖拽的最大长度
    contentWidth - int (default undefined)//内幕内用的宽度
    animateScroll - boolean (default false)//滚动动画
    animateDuration - int (default 300)//动画延迟
    animateEase - string (default ''linear'')//动画轨迹
    hijackInternalLinks - boolean (default false)//截获内部链接
    verticalGutter - int (default 4)//处置不掉长度
    horizontalGutter - int (default 4)//水平不掉长度
    mouseWheelSpeed - int (default 10)//鼠标疼速度
    arrowButtonSpeed - int (default 10)//方向键按钮的速度
    arrowRepeatFreq - int (default 100)//按钮事件重复频率
    arrowScrollOnHover - boolean (default false)//接手鼠标在方向键上滑过的动作
    verticalArrowPositions - string [split|before|after|os] (default split)//垂直方向上按钮的位置
    horizontalArrowPositions - string [split|before|after|os] (default split)//水平方向上按钮的位置
    enableKeyboardNavigation - boolean (default true)//是否接受键盘操作 
    hideFocus - boolean (default false)//隐藏焦点
    clickOnTrack - boolean (default true)//路径上点击操作
    trackClickSpeed - int (default 30)//互动轨迹上的点击速度
    trackClickRepeatFreq - int (default 100)//滑动轨迹上的重复频率 
);

.Net 中的 AutoScrollPosition 问题 (panel 滚动条的位置设定)

.Net 中的 AutoScrollPosition 问题 (panel 滚动条的位置设定)

本文转自:http://www.cnblogs.com/h2appy/archive/2008/04/23/1167400.html

有 Panel 类型的窗体 panel1,其 AutoScroll 设为了 True。

在使用 AutoScrollPosition 调整滚动条时出现了很混乱的现象,有时滚动条会自动滚动到起始处。

经过试验,找到了原因:

以调整水平滚动条为例。
例子一:
Point p = new Point(20, 0);
panel1.AutoScrollPosition = p;
上面两行代码使滚动条向右滚动了 20 个像素点;注意,此时的 AutoScrollPosition 的值是(-20, 0)!就是说
AutoScrollPosition 自动给 20 加了个 “负号”。
例子二:
Point p = new Point(-20, 0);
panel1.AutoScrollPosition = p;
这两行代码使滚动条滚动到了起始处,因为 - 20 前面再加一个 “负号” 就变成了正数 20,而滚动条起始位置是 0,
越向右值越小(负数)。滚动条不能滚动到起始点左侧去,所以内部自动抛弃了 20,取值为 0。
例子三:
在使用 AutoScrollPosition.X 时也要注意它是非正数(0 或负数),比如想在当前滚动条位置的基础上再向
右滚动 10 个像素,应该:
Point p = new Point(10 - panel1.AutoScrollPosition.X, 0);
panel1.AutoScrollPosition = p;
因为 panel1.AutoScrollPosition.X 是负数所以要用 10 减去 panel1.AutoScrollPosition.X,使之变为正数。

总之,在使用 AutoScrollPosition 时只要记得两点:
1、水平滚动条起始点的 AutoScrollPosition.X 值为 0,越往右值越小(负数)。
2、通过 Point 类型的方式给 AutoScrollPosition.X 赋值时,内部自动将数值前加了一个 “负号”。

c# – 如何仅使用xaml在scrollviewer中设置滚动条的余量

c# – 如何仅使用xaml在scrollviewer中设置滚动条的余量

我需要在滚动查看器中设置滚动条的边距.
我尝试在默认的scrollviewer样式中重写滚动条边距.只需修改样式中的边距,滚动条magin设置正确的值.但滚动条移动时,scrollviewer中的内容会保持静态.我该如何修复它还是有另一种方法来设置scrollviewer中滚动条的余量更容易吗?
<Style targettype="ScrollViewer">
  <Setter Property="HorizontalContentAlignment" Value="Left" />
  <Setter Property="VerticalContentAlignment" Value="Top" />
  <Setter Property="VerticalScrollBarVisibility" Value="Visible" />
  <Setter Property="Padding" Value="4"/>
  <Setter Property="BorderThickness" Value="1"/>
  <Setter Property="BorderBrush">
      <Setter.Value>
          <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
              <GradientStop Color="#FFA3AEB9" Offset="0"/>
              <GradientStop Color="#FF8399A9" Offset="0.375"/>
              <GradientStop Color="#FF718597" Offset="0.375"/>
              <GradientStop Color="#FF617584" Offset="1"/>
          </LinearGradientBrush>
      </Setter.Value>
  </Setter>
  <Setter Property="Template">
      <Setter.Value>
          <ControlTemplate targettype="ScrollViewer">
              <Border CornerRadius="2" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}">
                  <Grid Background="{TemplateBinding Background}">
                      <Grid.RowDeFinitions>
                          <RowDeFinition Height="*"/>
                          <RowDeFinition Height="Auto"/>
                      </Grid.RowDeFinitions>
                      <Grid.ColumnDeFinitions>
                          <ColumnDeFinition Width="*"/>
                          <ColumnDeFinition Width="Auto"/>
                      </Grid.ColumnDeFinitions>

                      <ScrollContentPresenter x:Name="ScrollContentPresenter"
                                              Cursor="{TemplateBinding Cursor}"
                                              Margin="{TemplateBinding Padding}"
                                              ContentTemplate="{TemplateBinding ContentTemplate}"/>

                      <Rectangle Grid.Column="1" Grid.Row="1" Fill="#FFE9EEF4"/>

                      <ScrollBar x:Name="VerticalScrollBar" Width="18"
                                 IsTabStop="False"
                                 Visibility="{TemplateBinding ComputedVerticalScrollBarVisibility}"
                                 Grid.Column="1" Grid.Row="0" Orientation="Vertical"
                                 ViewportSize="{TemplateBinding ViewportHeight}"
                        `enter code here`         Maximum="{TemplateBinding ScrollableHeight}"
                                 Minimum="0"
                                 Value="{TemplateBinding VerticalOffset}"
                                 Margin="0,20,0"/>

                      <ScrollBar x:Name="HorizontalScrollBar" Height="18"
                                 IsTabStop="False"
                                 Visibility="{TemplateBinding ComputedHorizontalScrollBarVisibility}"
                                 Grid.Column="0" Grid.Row="1" Orientation="Horizontal"
                                 ViewportSize="{TemplateBinding ViewportWidth}"
                                 Maximum="{TemplateBinding ScrollableWidth}"
                                 Minimum="0"
                                 Value="{TemplateBinding HorizontalOffset}"
                                 Margin="-1,-1,-1"/>

                  </Grid>
              </Border>
          </ControlTemplate>
      </Setter.Value>
  </Setter>

解决方法

我为垂直ScrollBar制作了Margin =“10,10,20”,它工作得很好.
ScrollViewer包含一个用于测试目的的DataGrid.

XAML:

<ScrollViewer HorizontalAlignment="Left" Height="152" Margin="25,42,0" VerticalAlignment="Top" Width="449">
        <ScrollViewer.Template>
            <ControlTemplate targettype="{x:Type ScrollViewer}">
                <Grid x:Name="Grid" Background="{TemplateBinding Background}">
                    <Grid.ColumnDeFinitions>
                        <ColumnDeFinition Width="*"/>
                        <ColumnDeFinition Width="Auto"/>
                    </Grid.ColumnDeFinitions>
                    <Grid.RowDeFinitions>
                        <RowDeFinition Height="*"/>
                        <RowDeFinition Height="Auto"/>
                    </Grid.RowDeFinitions>
                    <Rectangle x:Name="Corner" Grid.Column="1" Fill="{DynamicResource {x:Static SystemColors.ControlBrushKey}}" Grid.Row="1"/>
                    <ScrollContentPresenter x:Name="PART_ScrollContentPresenter" CanContentScroll="{TemplateBinding CanContentScroll}" CanHorizontallyScroll="False" CanVerticallyScroll="False" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" Grid.Column="0" Margin="{TemplateBinding Padding}" Grid.Row="0"/>
                    <ScrollBar x:Name="PART_VerticalScrollBar" AutomationProperties.AutomationId="VerticalScrollBar" Cursor="Arrow" Grid.Column="1" Maximum="{TemplateBinding ScrollableHeight}" Minimum="0" Grid.Row="0" Visibility="{TemplateBinding ComputedVerticalScrollBarVisibility}" Value="{Binding VerticalOffset,Mode=OneWay,RelativeSource={RelativeSource TemplatedParent}}" ViewportSize="{TemplateBinding ViewportHeight}" Margin="10,20"/>
                    <ScrollBar x:Name="PART_HorizontalScrollBar" AutomationProperties.AutomationId="HorizontalScrollBar" Cursor="Arrow" Grid.Column="0" Maximum="{TemplateBinding ScrollableWidth}" Minimum="0" Orientation="Horizontal" Grid.Row="1" Visibility="{TemplateBinding ComputedHorizontalScrollBarVisibility}" Value="{Binding HorizontalOffset,RelativeSource={RelativeSource TemplatedParent}}" ViewportSize="{TemplateBinding ViewportWidth}"/>
                </Grid>
            </ControlTemplate>
        </ScrollViewer.Template>
        <DataGrid x:Name="dataGrid" ItemsSource="{Binding Mode=OneWay}">
            <DataGrid.DataContext>
                <local:MyDataCollection/>
            </DataGrid.DataContext>
        </DataGrid>
    </ScrollViewer>

e822. 监听 JScrollPane 的滚动

e822. 监听 JScrollPane 的滚动

A scrollbar in a scroll pane fires adjustment events whenever its value changes.

// Create a scrollable text area
    JTextArea textArea = new JTextArea();
    JScrollPane pane = new JScrollPane(textArea);
    
    // Listen for value changes in the scroll pane''s scrollbars
    AdjustmentListener listener = new MyAdjustmentListener();
    pane.getHorizontalScrollBar().addAdjustmentListener(listener);
    pane.getVerticalScrollBar().addAdjustmentListener(listener);
    
    class MyAdjustmentListener implements AdjustmentListener {
        // This method is called whenever the value of a scrollbar is changed,
        // either by the user or programmatically.
        public void adjustmentValueChanged(AdjustmentEvent evt) {
            Adjustable source = evt.getAdjustable();
    
            // getValueIsAdjusting() returns true if the user is currently
            // dragging the scrollbar''s knob and has not picked a final value
            if (evt.getValueIsAdjusting()) {
                // The user is dragging the knob
                return;
            }
    
            // Determine which scrollbar fired the event
            int orient = source.getOrientation();
            if (orient == Adjustable.HORIZONTAL) {
                // Event from horizontal scrollbar
            } else {
                // Event from vertical scrollbar
            }
    
            // Determine the type of event
            int type = evt.getAdjustmentType();
            switch (type) {
              case AdjustmentEvent.UNIT_INCREMENT:
                  // Scrollbar was increased by one unit
                  break;
              case AdjustmentEvent.UNIT_DECREMENT:
                  // Scrollbar was decreased by one unit
                  break;
              case AdjustmentEvent.BLOCK_INCREMENT:
                  // Scrollbar was increased by one block
                  break;
              case AdjustmentEvent.BLOCK_DECREMENT:
                  // Scrollbar was decreased by one block
                  break;
              case AdjustmentEvent.TRACK:
                  // The knob on the scrollbar was dragged
                  break;
            }
    
            // Get current value
            int value = evt.getValue();
        }
    }

 

Related Examples

关于在JScrollPane上设置滚动条jscrollpane滚动条位置的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于(二) 美化滚动条 - JScrollPane.js、.Net 中的 AutoScrollPosition 问题 (panel 滚动条的位置设定)、c# – 如何仅使用xaml在scrollviewer中设置滚动条的余量、e822. 监听 JScrollPane 的滚动的相关知识,请在本站寻找。

本文标签: