Java 当框架太小而无法显示所有JList时,如何使滚动条显示在JList上?
我想让滚动条出现在JList上,只要该框架的大小调整到对于列表本身来说太小。到目前为止,这是我的代码。运行它,调整框架的大小,注意JList上没有滚动条出现Java 当框架太小而无法显示所有JList时,如何使滚动条显示在JList上?,java,swing,jscrollpane,jlist,Java,Swing,Jscrollpane,Jlist,我想让滚动条出现在JList上,只要该框架的大小调整到对于列表本身来说太小。到目前为止,这是我的代码。运行它,调整框架的大小,注意JList上没有滚动条出现 import java.awt.Dimension; import javax.swing.JFrame; import javax.swing.JList; import javax.swing.JPanel; import javax.swing.JScrollPane; public class JListScroll exte
import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
public class JListScroll extends JPanel{
JScrollPane listScrollPane;
public JListScroll() {
String[] stringArray = {"Testing","This","Stuff"};
JList<String> rowList = new JList<String>(stringArray);
listScrollPane = new JScrollPane();
listScrollPane.getViewport().setView(rowList);
this.setSize(new Dimension(75,200));
this.add(listScrollPane);
this.doLayout();
}
public static void main(String[] args){
JFrame frame = new JFrame();
JListScroll scrollPanel = new JListScroll();
frame.add(scrollPanel);
frame.setVisible(true);
frame.setSize(new Dimension(75,300));
}
}
导入java.awt.Dimension;
导入javax.swing.JFrame;
导入javax.swing.JList;
导入javax.swing.JPanel;
导入javax.swing.JScrollPane;
公共类JListScroll扩展了JPanel{
JScrollPane列表滚动窗格;
公共JListScroll(){
String[]stringArray={“Testing”、“This”、“Stuff”};
JList行列表=新的JList(stringArray);
listScrollPane=newJScrollPane();
listScrollPane.getViewport().setView(行列表);
此.设置尺寸(新尺寸(75200));
此.add(列表滚动窗格);
这个是doLayout();
}
公共静态void main(字符串[]args){
JFrame=新JFrame();
JListScroll scrollPanel=新的JListScroll();
frame.add(滚动面板);
frame.setVisible(true);
框架设置尺寸(新尺寸(75300));
}
}
请注意,添加了一个JScrollPane,但当窗口变小时,列表上不会显示滚动条。这就是我想要解决的问题
提前谢谢 - JPanel已经实现了FlowLayout
- FlowLayout仅接受PreferredSize(在您的情况下,通过setSize硬编码)
- FlowLayout未指定,未实现任何调整JComponents大小(由FlowLayout分层)以及容器,JComponent不可调整大小,保持原样
- 我不想评论你在这里发布的代码,请看差异,非常好的低级别
可以使用方法强制(垂直)滚动条的可见性
import java.awt.BorderLayout;
import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
public class JListScroll {
private JFrame frame = new JFrame();
private JPanel panel = new JPanel();
private JScrollPane listScrollPane = new JScrollPane();
private String[] stringArray = {"Testing", "This", "Stuff"};
private JList rowList = new JList(stringArray);
public JListScroll() {
rowList.setVisibleRowCount(2);
listScrollPane.setViewportView(rowList);
panel.setLayout(new BorderLayout());
panel.add(listScrollPane);
frame.add(panel);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // EDIT
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
JListScroll jListScroll = new JListScroll();
}
});
}
}