mirror of
https://github.com/openjdk/jdk.git
synced 2026-01-28 12:09:14 +00:00
8364146: JList getScrollableUnitIncrement return 0
Reviewed-by: prr, tr
This commit is contained in:
parent
1f206e5e12
commit
530493fed4
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1997, 2023, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1997, 2025, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -2497,6 +2497,9 @@ public class JList<E> extends JComponent implements Scrollable, Accessible
|
||||
/**
|
||||
* Returns the distance to scroll to expose the next or previous
|
||||
* row (for vertical scrolling) or column (for horizontal scrolling).
|
||||
* The scrolling distance returned will be positive,
|
||||
* unless scrolling for the specified parameters is already
|
||||
* at its furthest extent, in which case it will return zero.
|
||||
* <p>
|
||||
* For horizontal scrolling, if the layout orientation is {@code VERTICAL},
|
||||
* then the list's font size is returned (or {@code 1} if the font is
|
||||
@ -2507,8 +2510,9 @@ public class JList<E> extends JComponent implements Scrollable, Accessible
|
||||
* {@code SwingConstants.VERTICAL}
|
||||
* @param direction less or equal to zero to scroll up/back,
|
||||
* greater than zero for down/forward
|
||||
* @return the "unit" increment for scrolling in the specified direction;
|
||||
* always positive
|
||||
* @return the non-negative "unit" increment
|
||||
* for scrolling in the specified direction
|
||||
*
|
||||
* @see #getScrollableBlockIncrement
|
||||
* @see Scrollable#getScrollableUnitIncrement
|
||||
* @throws IllegalArgumentException if {@code visibleRect} is {@code null}, or
|
||||
@ -2529,7 +2533,8 @@ public class JList<E> extends JComponent implements Scrollable, Accessible
|
||||
/* Scroll Down */
|
||||
if (direction > 0) {
|
||||
Rectangle r = getCellBounds(row, row);
|
||||
return (r == null) ? 0 : r.height - (visibleRect.y - r.y);
|
||||
return (r == null) ? 0 :
|
||||
((r.height - (visibleRect.y - r.y)) < 0) ? 0 : r.height - (visibleRect.y - r.y);
|
||||
}
|
||||
/* Scroll Up */
|
||||
else {
|
||||
|
||||
86
test/jdk/javax/swing/JList/JListTest.java
Normal file
86
test/jdk/javax/swing/JList/JListTest.java
Normal file
@ -0,0 +1,86 @@
|
||||
/*
|
||||
* Copyright (c) 2025, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @bug 8364146
|
||||
* @key headful
|
||||
* @summary Verifies JList getScrollableUnitIncrement return non-negative number
|
||||
* @run main JListTest
|
||||
*/
|
||||
|
||||
import java.awt.Dimension;
|
||||
import java.awt.Rectangle;
|
||||
import javax.swing.JFrame;
|
||||
import javax.swing.JList;
|
||||
import javax.swing.JScrollPane;
|
||||
import javax.swing.SwingConstants;
|
||||
import javax.swing.SwingUtilities;
|
||||
public class JListTest {
|
||||
|
||||
private static JFrame f;
|
||||
|
||||
public static void main(String[] argv) throws Exception {
|
||||
|
||||
SwingUtilities.invokeAndWait(() -> {
|
||||
try {
|
||||
f = new JFrame();
|
||||
String[] data = {"One", "Two", "Three", "Four", "Five", "Six ",
|
||||
"Seven", "Eight", "Nine", "Ten", "Eleven", "Twelv"};
|
||||
JList<String> list = new JList<>(data);
|
||||
list.setLayoutOrientation(JList.HORIZONTAL_WRAP);
|
||||
|
||||
JScrollPane sp = new JScrollPane(list);
|
||||
sp.setPreferredSize(new Dimension(200, 200));
|
||||
f.add(sp);
|
||||
f.pack();
|
||||
f.setVisible(true);
|
||||
|
||||
Rectangle cell = list.getCellBounds(1, data.length);
|
||||
System.out.println(cell);
|
||||
cell.y = list.getHeight() + 10;
|
||||
int unit = list.getScrollableUnitIncrement(
|
||||
cell,
|
||||
SwingConstants.VERTICAL,
|
||||
-1);
|
||||
System.out.println("Scrollable unit increment: " + unit);
|
||||
|
||||
if (unit < 0) {
|
||||
throw new RuntimeException("JList scrollable unit increment should be greater than 0.");
|
||||
}
|
||||
unit = list.getScrollableUnitIncrement(
|
||||
cell,
|
||||
SwingConstants.VERTICAL,
|
||||
1);
|
||||
System.out.println("Scrollable unit increment: " + unit);
|
||||
if (unit < 0) {
|
||||
throw new RuntimeException("JList scrollable unit increment should be greater than 0.");
|
||||
}
|
||||
} finally {
|
||||
if (f != null) {
|
||||
f.dispose();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user