【发布时间】:2016-02-24 21:34:03
【问题描述】:
编辑
这是您的代码,其中 projectList 的字符串太长,应该会出现滚动条。但事实并非如此。相反,它会扩大帧大小
import java.awt.BorderLayout;
import javax.swing.*;
public class FooFrame extends JFrame {
private JList jList;
private String[] projectList = {"One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nineeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"};
private DefaultListModel listItems;
private JScrollPane scrollpane;
public FooFrame() {
JLabel lblHeading = new JLabel(
" Demo text");
JPanel mainLayout = new JPanel();
mainLayout.setLayout(new BorderLayout());
mainLayout.add(lblHeading, BorderLayout.NORTH);
jList = new JList(projectList);
// listItems = new DefaultListModel(); // wasted line since you don't use this
jList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
scrollpane = new JScrollPane(jList, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
mainLayout.add(scrollpane);
add(mainLayout);
}
private static void createAndShowGui() {
FooFrame frame = new FooFrame();
frame.setSize(10,10);
frame.setResizable(false);
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.pack();
frame.setLocationByPlatform(true);
frame.setVisible(true);
}
public static void main(String[] args) {
createAndShowGui();
}
}
当我尝试在 Japanel 中的 Jscrollpane 中添加 JList 时,我注意到了一件奇怪的事情。如果我尝试直接在框架中的 JscrollPane 中添加 JList,则可以轻松完成。好像我正在尝试将其添加到面板中(带有边框布局),但它对我不起作用。
这里是示例代码
JLabel lblHeading = new JLabel(
" Demo text");
JPanel mainLayout = new JPanel();
mainLayout.setLayout(new BorderLayout());
mainLayout.add(lblHeading, BorderLayout.NORTH);
jList = new JList(projectList);
listItems = new DefaultListModel();
jList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
scrollpane = new JScrollPane(jList, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
mainLayout.add(scrollpane);
add(mainLayout);
无论我做什么,JList 中的文本都会超出框架并且不会出现滚动条。
有什么建议吗?
【问题讨论】:
-
您需要创建并发布一个小而简单的完整程序来说明您的问题,MCVE。请查看链接了解这个非常有用的工具的详细信息。
-
是的,试过了 TT。它对我不起作用。
-
@HovercraftFullOfEels,绅士,它的 5-6 行代码。我不认为它可以更短。我需要在 JPanel 内的 JscrollPane 中添加一个 JList。我希望这能清楚地向您说明我的问题。感谢您回复我的问题
-
@TT.:这不可能改变他的结果,因为他以默认方式添加 JScrollPane,这意味着它会自动将 JScrollPane 放置在 BorderLayout.CENTER 位置。再一次对 Richard 来说,您的代码中没有任何内容可以解释您的问题。同样,我们真的很想看到你的minimal reproducible example。
-
.......你好?
标签: java swing jscrollpane jlist