如果您想了解在JScrollPane上设置滚动条的相关知识,那么本文是一篇不可错过的文章,我们将对jscrollpane滚动条位置进行全面详尽的解释,并且为您提供关于(二)美化滚动条-JScrollP
如果您想了解在JScrollPane上设置滚动条的相关知识,那么本文是一篇不可错过的文章,我们将对jscrollpane滚动条位置进行全面详尽的解释,并且为您提供关于(二) 美化滚动条 - JScrollPane.js、.Net 中的 AutoScrollPosition 问题 (panel 滚动条的位置设定)、c# – 如何仅使用xaml在scrollviewer中设置滚动条的余量、e822. 监听 JScrollPane 的滚动的有价值的信息。
本文目录一览:- 在JScrollPane上设置滚动条(jscrollpane滚动条位置)
- (二) 美化滚动条 - JScrollPane.js
- .Net 中的 AutoScrollPosition 问题 (panel 滚动条的位置设定)
- c# – 如何仅使用xaml在scrollviewer中设置滚动条的余量
- e822. 监听 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资料
- 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 滚动条的位置设定)
本文转自: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中设置滚动条的余量
我尝试在默认的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>
解决方法
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 的滚动
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();
}
}
关于在JScrollPane上设置滚动条和jscrollpane滚动条位置的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于(二) 美化滚动条 - JScrollPane.js、.Net 中的 AutoScrollPosition 问题 (panel 滚动条的位置设定)、c# – 如何仅使用xaml在scrollviewer中设置滚动条的余量、e822. 监听 JScrollPane 的滚动的相关知识,请在本站寻找。
本文标签: