我有一个JFrame,在这个JFrame中我有一个我绘制的JPanel,这个面板可以是任何大小,所以我将它放入一个JScrollpane让我在面板大于窗口屏幕大小时滚动.
不幸的是,我的预期不起作用:
使JFrame窗口小于JPanel大小不会显示滚动条
JScrollPane大小现在似乎锁定了我添加到它的JPanel的大小,之前它调整到它的JFrame窗口的边界(它仍然有点这样但现在只是垂直?!)
无论我为首选大小设置什么,JPanel似乎都假设JScrollpane的大小
我确信我做的事情很愚蠢,如果有人能指出我会非常感激的话!
JPanel _ImageCanvas = new JPanel(); // 'Canvas' to draw on
JScrollPane _ScrollPane = new JScrollPane();
// set size of 'canvas'
_ImageCanvas.setMinimumSize(new Dimension(100,100));
// Scroll pane smaller then the size of the canvas so we should get scroll bars right?
_ScrollPane.setMinimumSize(new Dimension(50,50));
// Add a border to 'canvas'
_ImageCanvas.setBorder(BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
_ScrollPane.setViewportView(JPanel);
Run Code Online (Sandbox Code Playgroud)
非常感谢
大卫
我有一个JScrollPane与FlowLayout我希望有一个固定的宽度.它应该只是垂直滚动,当我调整窗口大小时应该自动重新排列内容.我认为应该有一种方法,setEnableHorizontalScroll(false)但找不到它.
有没有简单的方法来做到这一点?
我有下一个代码:
listModel = new DefaultListModel();
listModel.addElement(dateFormat.format(new Date()) + ": Msg1");
messageList = new JList(listModel);
messageList.setLayoutOrientation(JList.VERTICAL);
messageScrollList = new JScrollPane(messageList);
messageScrollList.setPreferredSize(new Dimension(500, 200));
messageScrollList.getVerticalScrollBar().addAdjustmentListener(new AdjustmentListener() {
public void adjustmentValueChanged(AdjustmentEvent e) {
e.getAdjustable().setValue(e.getAdjustable().getMaximum());
}
});
Run Code Online (Sandbox Code Playgroud)
它会自动向下滚动.但是,如果我尝试向上滚动以重新阅读消息,则会强制向下滚动.我怎样才能解决这个问题?
我有一个页面,其中包含iframe使用Javascript加载的页面:
的index.html
<iframe id="myFrame" width="800" height="600" style="display: none;"></iframe>
<div id="loader"><!-- some loading indicator --></div>
<script type="text/javascript">
function someFunction() {
var myFrame = document.getElementById('myFrame');
var loader = document.getElementById('loader');
loader.style.display = 'block';
myFrame.src = 'myFrame.html';
myFrame.onload = function() {
myFrame.style.display = 'block';
loader.style.display = 'none';
};
}
</script>
Run Code Online (Sandbox Code Playgroud)
加载的页面iframe包含一些Javascript逻辑,用于计算某些元素的大小,以便添加JS驱动的滚动条(jScrollPane + jQuery Dimensions).
myFrame.html
<div id="scrollingElement" style="overflow: auto;">
<div id="several"></div>
<div id="child"></div>
<div id="elements"></div>
</div>
<script type="text/javascript">
$(document).load(function() {
$('#scrollingElement').jScrollPane();
});
</script>
Run Code Online (Sandbox Code Playgroud)
这适用于Chrome(可能还有其他Webkit浏览器),但在Firefox和IE中失败,因为在jScrollPane调用时,所有元素仍然是隐形的,jQuery Dimensions无法确定任何元素的维度.
有没有办法确保在被叫 …
伙计们,我需要在jscrollpanel中放置一些按钮,但JScrollPane不会垂直创建滚动.我在JScrollPane中使用JPanel,它使用简单的FlowLayout布局.如何让JScrollPanel只在垂直方向滚动?
问题:

期望的解决方案:

更新到jQuery 1.8.0后,jScrollPane给了我这个错误:
未捕获错误:语法错误,无法识别的表达式:[type = text/javascript],not([type])
在这一行:
$("script",elem).filter('[type=text/javascript],not([type])').remove();
Run Code Online (Sandbox Code Playgroud)
有人可以帮忙吗?
谢谢
我有一个JScrollPane包含BoxLayout(PAGE AXIS)的面板.
我的问题是JScrollPane不响应鼠标滚轮事件.要使用鼠标滚轮滚动我需要在JScrollBar.
我发现这个线索,我没有MouseMotionListener或MouseWheelListener只有一个MouseListener.我认为我的问题来自于我的JScrollPane行为JPanel包含其他面板本身.因此,当鼠标位于其中的面板上时JScrollPane,似乎该面板消耗了该事件,我从未见过滚动窗格.
是否有正确的方法可以使滚动窗格的子项捕获的事件对此滚动窗格可见?
SSCCE:

这是一个简单的测试用例,试图显示我在Swing应用程序中尝试的时间.
框架:
public class NewJFrame extends javax.swing.JFrame {
public NewJFrame() {
initComponents();
for (int i = 0; i < 50; i++) {
jPanel1.add(new TestPanel());
}
}
private void initComponents() {
jScrollPane1 = new javax.swing.JScrollPane();
jPanel1 = new javax.swing.JPanel();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jPanel1.setLayout(new javax.swing.BoxLayout(jPanel1, javax.swing.BoxLayout.PAGE_AXIS));
jScrollPane1.setViewportView(jPanel1);
getContentPane().add(jScrollPane1, java.awt.BorderLayout.CENTER);
pack();
}
public static void main(String args[]) …Run Code Online (Sandbox Code Playgroud) 我有一个带滚动条的文本区域.我会定期添加新的文本行.我希望每当添加新行时,文本区域会自动滚动到最底部的条目(最新的条目).我怎么能做到这一点?
textAreaStatus = new WebTextArea();
scrollPane = new JScrollPane(textAreaStatus);
textAreaStatus.setBackground(Color.black);
textAreaStatus.setBorder(BorderFactory.createEmptyBorder(4, 4, 4, 4));
Run Code Online (Sandbox Code Playgroud) 我在我的项目中添加了JPanel一个JScrollPane.
所有工作正常,但有关于使用鼠标滚轮一个问题鼠标滚轮在JPanel的.滚动速度非常慢.如何让它更快?
我的代码是:
JPanel panel = new JPanel();
panel.setLayout(new BorderLayout());
objCheckBoxList = new CheckBoxList();
BaseTreeExplorer node = (BaseTreeExplorer)projectMain.objCommon.tree.getLastSelectedPathComponent();
if (node.getObject() != null) {
cmbList.setSelectedItem(node.getParent().toString());
} else {
if (node.toString().equalsIgnoreCase("List of attributes")) {
cmbList.setSelectedIndex(0);
} else {
cmbList.setSelectedItem(node.toString());
}
}
panel.add(objCheckBoxList);
JScrollPane myScrollPanel = new JScrollPane(panel);
myScrollPanel.setPreferredSize(new Dimension(200, 200));
myScrollPanel.setBorder(BorderFactory.createTitledBorder("Attribute List"));
Run Code Online (Sandbox Code Playgroud) 我目前正在使用Jquery Lazy Load,我想知道是否有一种方法可以在我的容器中的所有图像结束加载时进行回调(当懒惰加载完成了他所有的魔法时).
这样做的原因是我也在使用jScrollPane插件,我想调用jScrollPane reinitialize函数.
谢谢'
jscrollpane ×10
swing ×7
java ×6
jpanel ×2
jquery ×2
autoscroll ×1
callback ×1
events ×1
iframe ×1
javascript ×1
jlist ×1
jscrollbar ×1
jtextarea ×1
lazy-loading ×1
mouseevent ×1
mousewheel ×1