Java 如何使用“制作摆动卷轴”;确保索引可见;?
运行此代码时,所选项目不可见。我已经尝试在一个单独的线程中运行它,但没有成功Java 如何使用“制作摆动卷轴”;确保索引可见;?,java,swing,Java,Swing,运行此代码时,所选项目不可见。我已经尝试在一个单独的线程中运行它,但没有成功 import javax.swing.JFrame; import java.awt.Container; import javax.swing.JList; import javax.swing.ListSelectionModel; import javax.swing.JScrollPane; import java.awt.Dimension; public class ScrollList extends
import javax.swing.JFrame;
import java.awt.Container;
import javax.swing.JList;
import javax.swing.ListSelectionModel;
import javax.swing.JScrollPane;
import java.awt.Dimension;
public class ScrollList extends JFrame {
int defaultValue;
ScrollList() {
Container cp = getContentPane();
JList list = createList();
defaultValue = 20;
cp.add(createScrollPane(list));
pack();
setVisible(true);
list.ensureIndexIsVisible(defaultValue);
}
JList createList() {
Integer[] model = new Integer[73];
JList list = new JList(model);
for (int i = 1; i < model.length; i++)
model[i] = i;
list.setSelectedIndex(defaultValue);
return list;
}
JScrollPane createScrollPane(JList list) {
JScrollPane s = new JScrollPane(createList());
s.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
s.setPreferredSize(new Dimension(100, 200));
return s;
}
public static void main(String[] args) {
new ScrollList();
}
}
import javax.swing.JFrame;
导入java.awt.Container;
导入javax.swing.JList;
导入javax.swing.ListSelectionModel;
导入javax.swing.JScrollPane;
导入java.awt.Dimension;
公共类ScrollList扩展了JFrame{
int默认值;
滚动列表(){
容器cp=getContentPane();
JList list=createList();
默认值=20;
cp.add(创建滚动窗格(列表));
包装();
setVisible(真);
list.ensureIndexIsVisible(默认值);
}
JList createList(){
整数[]模型=新整数[73];
JList列表=新的JList(型号);
对于(int i=1;i
我想出来了
代码如下:
import javax.swing.JFrame;
import java.awt.Container;
import javax.swing.JList;
import javax.swing.ListSelectionModel;
import javax.swing.JScrollPane;
import java.awt.Dimension;
public class ScrollList extends JFrame {
final int defaultValue = 20;
ScrollList() {
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
Container cp = getContentPane();
JList list = createList();
cp.add(createScrollPane(list));
pack();
list.ensureIndexIsVisible(list.getSelectedIndex());
setVisible(true);
}
JList createList() {
Integer[] model = new Integer[73];
JList list = new JList(model);
for (int i = 1; i < model.length; i++)
model[i] = i;
list.setSelectedIndex(defaultValue);
return list;
}
JScrollPane createScrollPane(JList list) {
JScrollPane s = new JScrollPane(list); // MAJOR FIX HERE!
s.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
s.setPreferredSize(new Dimension(100, 200));
return s;
}
public static void main(String[] args) {
new ScrollList();
}
}
import javax.swing.JFrame;
导入java.awt.Container;
导入javax.swing.JList;
导入javax.swing.ListSelectionModel;
导入javax.swing.JScrollPane;
导入java.awt.Dimension;
公共类ScrollList扩展了JFrame{
最终int默认值=20;
滚动列表(){
setDefaultCloseOperation(在关闭时处理);
容器cp=getContentPane();
JList list=createList();
cp.add(创建滚动窗格(列表));
包装();
list.ensureIndexIsVisible(list.getSelectedIndex());
setVisible(真);
}
JList createList(){
整数[]模型=新整数[73];
JList列表=新的JList(型号);
对于(int i=1;i
不使用传递到createScrollPane()方法中的列表,而是创建一个新的列表。我找到了
代码如下:
import javax.swing.JFrame;
import java.awt.Container;
import javax.swing.JList;
import javax.swing.ListSelectionModel;
import javax.swing.JScrollPane;
import java.awt.Dimension;
public class ScrollList extends JFrame {
final int defaultValue = 20;
ScrollList() {
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
Container cp = getContentPane();
JList list = createList();
cp.add(createScrollPane(list));
pack();
list.ensureIndexIsVisible(list.getSelectedIndex());
setVisible(true);
}
JList createList() {
Integer[] model = new Integer[73];
JList list = new JList(model);
for (int i = 1; i < model.length; i++)
model[i] = i;
list.setSelectedIndex(defaultValue);
return list;
}
JScrollPane createScrollPane(JList list) {
JScrollPane s = new JScrollPane(list); // MAJOR FIX HERE!
s.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
s.setPreferredSize(new Dimension(100, 200));
return s;
}
public static void main(String[] args) {
new ScrollList();
}
}
import javax.swing.JFrame;
导入java.awt.Container;
导入javax.swing.JList;
导入javax.swing.ListSelectionModel;
导入javax.swing.JScrollPane;
导入java.awt.Dimension;
公共类ScrollList扩展了JFrame{
最终int默认值=20;
滚动列表(){
setDefaultCloseOperation(在关闭时处理);
容器cp=getContentPane();
JList list=createList();
cp.add(创建滚动窗格(列表));
包装();
list.ensureIndexIsVisible(list.getSelectedIndex());
setVisible(真);
}
JList createList(){
整数[]模型=新整数[73];
JList列表=新的JList(型号);
对于(int i=1;i
不使用传递到createScrollPane()方法的列表,而是创建一个新的列表。:)现在我问自己,为什么会出现这个错误?太长时间的黑客攻击。谢谢哈,我花了一点时间才找到。直到我决定在Eclipse中仔细调试代码。:)现在我问自己,为什么会出现这种错误?太长时间的黑客攻击。谢谢哈,我花了一点时间才找到。直到我决定在Eclipse中仔细调试代码。