水平滚动不起作用,JList

时间:2015-11-09 07:16:36

标签: java swing jscrollpane jlist border-layout

我有列表,表格和按钮组。例如。因此,表格将位于BorderLayout.WEST等的中心和列表

我觉得我真的不明白,因为当我开始下面的简单代码时,没有水平滚动条。但是当JList中的某个元素只能看到一部分时,我需要它。

import java.awt.BorderLayout;
import javax.swing.*;
public class ListDemo {

private JFrame frame;

private JPanel mainPanel;

public ListDemo() {

    createPartControl();
}

private void createPartControl() {
    frame = new JFrame();
    frame.setTitle("JList Demo");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    createMainPanel();

    frame.add(mainPanel);
    frame.pack();
    frame.setLocationByPlatform(true);
    frame.setVisible(true);
}

private void createMainPanel() {
    mainPanel = new JPanel();
    mainPanel.setLayout(new BorderLayout());

    String[] words = { "Word1", "Word2", "Word2", "Word4", "Word5", "very long worddddddddddddddd" };
    JList<String> list = new JList<>(words);
    // list.setFixedCellWidth(100);
    JScrollPane pane = new JScrollPane(list);
    // pane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
    mainPanel.add(pane, BorderLayout.WEST);

}

public static void main(String[] args) {
    new ListDemo();
}}

我在JList中尝试了固定宽度方法,但它不起作用。

2 个答案:

答案 0 :(得分:0)

在添加到Frame之前,您还需要将mainPanel放入JScrollPane:

frame.add(new JScrollPane(mainPanel));

答案 1 :(得分:0)

尝试将滚动窗格添加到BorderLayout面板的中心:

mainPanel.add(pane, BorderLayout.CENTER);

如果您需要它,请使用嵌套面板。