Java 向JList添加滚动条,将JList添加到JPanel
我有一个列表,我想动态填充,因此需要滚动条。我在列表中添加了一个滚动条。问题是,当我尝试将列表添加到面板时。滚动条在列表中可见,但即使列表的元素变大,滚动条也不起作用Java 向JList添加滚动条,将JList添加到JPanel,java,swing,jpanel,jscrollpane,Java,Swing,Jpanel,Jscrollpane,我有一个列表,我想动态填充,因此需要滚动条。我在列表中添加了一个滚动条。问题是,当我尝试将列表添加到面板时。滚动条在列表中可见,但即使列表的元素变大,滚动条也不起作用 JPanel p4=new JPanel(); Container c=getContentPane(); myList=new JList(model); myList.setVisibleRowCount(5); myList.setFixedCellWidth(200); p4.add(new JScrollPane(my
JPanel p4=new JPanel();
Container c=getContentPane();
myList=new JList(model);
myList.setVisibleRowCount(5);
myList.setFixedCellWidth(200);
p4.add(new JScrollPane(myList,ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS,
ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS));
c.add(p4);
在这里很好用。我用了这个文件,把所有不必要的东西都去掉了
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.ListSelectionModel;
import java.awt.BorderLayout;
public class SplitPaneDemo extends JPanel {
private JList<String> list;
private String[] imageNames = { "Bird", "Cat", "Dog", "Rabbit", "Pig", "dukeWaveRed",
"kathyCosmo", "lainesTongue", "left", "middle", "right", "stickerface"};
public SplitPaneDemo() {
setLayout( new BorderLayout( ) );
list = new JList<>(imageNames);
list.setSelectionMode( ListSelectionModel.SINGLE_SELECTION );
list.setSelectedIndex( 0 );
add( new JScrollPane(list) );
}
/**
* Create the GUI and show it. For thread safety,
* this method should be invoked from the
* event-dispatching thread.
*/
private static void createAndShowGUI() {
//Create and set up the window.
JFrame frame = new JFrame("SplitPaneDemo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
SplitPaneDemo splitPaneDemo = new SplitPaneDemo();
frame.getContentPane().add(splitPaneDemo);
//Display the window.
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
//Schedule a job for the event-dispatching thread:
//creating and showing this application's GUI.
javax.swing.SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
createAndShowGUI();
}
});
}
}
import javax.swing.JFrame;
导入javax.swing.JList;
导入javax.swing.JPanel;
导入javax.swing.JScrollPane;
导入javax.swing.ListSelectionModel;
导入java.awt.BorderLayout;
公共类SplitPaneDemo扩展了JPanel{
私人名单;
私有字符串[]imageNames={“鸟”、“猫”、“狗”、“兔子”、“猪”、“杜克韦韦韦德”,
“kathyCosmo”、“lainesTongue”、“left”、“middle”、“right”、“StickeFace”};
公共SplitPaneDemo(){
setLayout(新的BorderLayout());
列表=新的JList(图像名称);
list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
列表。设置所选索引(0);
添加(新的JScrollPane(列表));
}
/**
*创建GUI并显示它。为了线程安全,
*应该从
*事件调度线程。
*/
私有静态void createAndShowGUI(){
//创建并设置窗口。
JFrame=新的JFrame(“SplitPaneDemo”);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
SplitPaneDemo SplitPaneDemo=新的SplitPaneDemo();
frame.getContentPane().add(splitPaneDemo);
//显示窗口。
frame.pack();
frame.setVisible(true);
}
公共静态void main(字符串[]args){
//为事件调度线程计划作业:
//创建并显示此应用程序的GUI。
javax.swing.SwingUtilities.invokeLater(新的Runnable(){
@凌驾
公开募捐{
createAndShowGUI();
}
});
}
}
这里有类似的问题:
不过,我觉得你的答案不一样。当你把东西添加到列表中时,问题可能就出现了;你可以试着做:
myList.revalidate();
更改后。否-在模型更改后(如果模型符合其通知合同)应按预期工作(请参阅@Robin's SSCCE)-您未显示的代码出现问题后,不需要重新验证。。。