Tag: jscrollpane

如何知道JScrollBar是否已经到达JScrollPane的底部?

我想知道是否有办法知道JScrollBar (在我的情况下是垂直的)何时到达包含JScrollPane的底部。 起初我虽然在滚动条上使用了AdjustmentListener ,但我不知道如何解释JScrollBar的value属性。 此外,我不确定正确理解maximum代表什么,如果我可以使用该值来获取我需要的信息。 编辑 : scrollPane.getVerticalScrollBar().addAdjustmentListener(new AdjustmentListener() { @Override public void adjustmentValueChanged(AdjustmentEvent ae) { System.out.println(“Value: ” + scrollPane.getVerticalScrollBar().getValue() + ” Max: ” + scrollPane.getVerticalScrollBar().getMaximum()); } }

JScrollPane未添加到JTextArea

我看到了一些像这个问题的问题,但我无法解决这个问题。 我无法在JTextArea看到JScrollPane 。 任何人都可以指出我在哪里犯了我的错误? 谢谢。 package experiement; import java.awt.Dimension; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTextArea; public class Experiment extends JFrame{ public Experiment(){ JTextArea tarea=new JTextArea(); tarea.setBounds(100,100,200,200); JScrollPane pan= new JScrollPane(); pan.setPreferredSize(new Dimension(100,100)); pan=new JScrollPane(tarea,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); add(pan); add(tarea); setLayout(null); setSize(600,600); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(true); } public static void main(String[]aegs){ Experiment e=new Experiment(); } }

Java:无法将Gridlayout应用于Jscrollpane。 获取java.lang.ClassCastException

我使用Gridlayout将4个元素放在一行中。 首先,我有一个JPanel,一切正常。 对于行数变大而我必须能够向下滚动的情况,我改变了一点。 现在我的JPanel上添加了一个JScrollPane 。 我使用了相同的代码,现在我只是将元素添加到Jscrollpane的视口中,但现在我得到了这个exceptionGet java.lang.ClassCastException: layout of JScrollPane must be a ScrollPaneLayout: at javax.swing.JScrollPane.setLayout(Unknown Source)我不确切知道为什么。 为什么不应该为Jscrollpane不知道Jscrollpane ? 这是代码: public objectDetails() { setTitle(“LLI_MC_Solver”); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); contentPane = new JPanel(); contentPane.setLayout(new GridLayout()); setBounds(100, 100, 510, 401); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); setContentPane(contentPane); contentPane.setVisible(true); contentPane.setPreferredSize(new Dimension(500, 390)); JScrollPane scrollPane = new JScrollPane(); scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS); scrollPane.setViewportBorder(new LineBorder(new Color(0, 0, […]

我需要在添加新组件时动态调整JPanel的大小

我需要让用户向我的JFrame添加更多文本字段,这样一旦框架的大小超过其原始值,滚动窗格就会介入。由于我无法将JScrollPane添加到JFrame以便启用滚动我决定将JPanel置于其上JFrame并将JPanel对象传递给JScrollPane构造函数。 滚动现在可以正常工作,但只能到达JPanel的边框。 事情是JPanel的大小保持原样,并没有动态扩展。 发生的事情是我的代码中的按钮占用了JPanel的大小为300×300的所有空间,但我想要做的是在这些控件耗尽其原始空间后让JPanel拉伸。 请指教。 import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.GridLayout; import java.awt.Rectangle; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.ScrollPaneConstants; public class Skrol { public static void main(String[] args) { JFrame f = new JFrame(); f.setLayout(new FlowLayout()); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JPanel p = new JPanel(); p.setPreferredSize(new Dimension(400,400)); JScrollPane jsp = new JScrollPane(p); […]

JScrollPane滚动条跳转到JEditorPane.setText()

每次(除了第一次)我在JEditorPane滚动条中设置文本跳转到JEditorPane的底部。 有什么方法可以避免这种情况吗? 我试过的一种方法是在setText()之后使用setCaretPosition(0)。 它有效,但它不是我需要的。 滚动条跳下然后跳起来。 有没有办法避免在settext()中滚动条的任何移动? 我的代码: package test; import javax.swing.JApplet; import javax.swing.JButton; import javax.swing.JEditorPane; import javax.swing.JScrollPane; import javax.swing.event.HyperlinkEvent; import javax.swing.event.HyperlinkListener; public class Test extends JApplet implements HyperlinkListener { JEditorPane dataDisplayer = new JEditorPane(); public void init() { ataDisplayer.setEditable(false); dataDisplayer.add(new JButton()); dataDisplayer.setContentType(“text/html”); JScrollPane jsp = new JScrollPane(dataDisplayer); dataDisplayer.setText(“Change Textbla”); this.dataDisplayer.addHyperlinkListener(this); setContentPane(jsp); } @Override public void […]

JTextPane阻止在父JScrollPane中滚动

我有以下“树”的对象: JPanel JScrollPane JPanel JPanel JScrollPane JTextPane 当使用鼠标滚轮滚动外部JScrollPane我遇到一个恼人的问题。 一旦鼠标光标触及内部JScrollPane,似乎滚动事件就会传递到JScrollPane中,并且第一个不再处理。 这意味着滚动“父”JScrollPane停止。 是否可以仅禁用内部JScrollPane上的鼠标滚轮? 或者更好的是,如果没有要滚动的内容(大多数情况下textpane只包含1-3行文本),则禁用滚动,但如果有更多内容则启用它?

Java Swing:JScrollPane无法正常工作

我有一个包含一些字段的JPanel。 JPanel的高度是有限的所以我必须在它周围放置一个JScrollPane,以便人们可以向下滚动。 如下所示,它显示完美。 但你不能向下滚动(或向上)。 DetailPanel detail = new DetailPanel(); JScrollPane jsp = new JScrollPane(detail); jsp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); jsp.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); jsp.setBounds(745, 10, 235, 225); add(jsp); 细节面板: private void init(){ setLayout(null); setSize(140, 400); int x = 5, y = 0; for(int i = 0; i < lbls.length; i++) { JLabel lbl = new JLabel(lbls[i]); lbl.setBounds(x, y, 200, 25); add(lbl); fields[i] […]

如何强制刷新/重绘JScrollPane?

基于数据库中的一些东西,我在程序开始时以编程方式将大量组件(JPanels,JLabels等)添加到JScrollPane中。 看起来这个过程对于GUI(?)来说太快了,所以JScrollPane并不总是正确更新,即使内部JPanel大于可见区域,滚动条也不可见。 调整窗口大小(JFrame)可以解决问题,因为我认为Java在调整组件大小时会重新打印组件。 作为测试,我添加了一个调试按钮,我可以在程序启动完成后单击该按钮。 我试图强制JScrollPane“刷新”自己。 我试过做: scrollpane.repaint(); scrollpane.validate(); scrollpane.revalidate(); 他们似乎都没有工作。 但是,如果我更改边框(或与JScrollPane相关的任何其他布局),它将正确刷新。 scrollpane.setBorder(new LineBorder(Color.RED)); 所以我基本上有2个问题。 强制滚动窗格“刷新”的命令是什么? 当我添加边框时,显然它正在做某种“重绘”的事情。 我该怎么办? 有没有一种方法可以“暂停”组件的打印,因为它们被添加并在我添加所有需要的组件后再次恢复? 就像现在一样,我基本上“看到”屏幕上添加的组件(即使它非常快)。 如果我可以添加我想要的所有组件会更好,然后告诉程序将其打印到屏幕/ JFrame。

如何设置JScrollPane以仅显示特定数量的行

我只需要一张表来显示3行,这些行可以从DB中获得前3个销售产品。 表已经准备就绪,但是除了3行之外,表中有很大一部分几乎是空的。 如何设置此滚动窗格的高度以匹配3行的高度? 解: table.setPreferredScrollableViewportSize(table.getPreferredSize());

JScrollPane的滚动事件

奇怪的是, JScrollPane没有方法addAdjustmentListener() 。 然而,adjustListener据说与滚动条一起使用。 每当JScrollPane以任何一种方式滚动时,我都希望发生一些事情。 怎么实现这样的事情?