如何创建可滚动的JTable

时间:2016-05-20 06:19:50

标签: java swing

我真的不知道我做错了什么。我试过跟随其他人的代码,但我似乎无法理解如何将滚动条添加到我的JTable

这是我到目前为止所拥有的:

 YOUR_EDITEXT_NAME.requestFocus();

2 个答案:

答案 0 :(得分:3)

虽然您使用JScrollPane来放置表格,但您并没有真正将滚动窗格添加到GroupLayout。相反,您将它添加到JFrame - 这是您的第一个错误。

所以你应该首先创建scrollpane,然后将表添加到其中;然后将滚动窗格添加到GroupLayout,如下所示

JScrollPane scrollPane = new JScrollPane(table);
// Force the scrollbars to always be displayed
scrollPane.setHorizontalScrollBarPolicy(
    JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
scrollPane.setVerticalScrollBarPolicy(
    JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); 


GroupLayout groupLayout = new GroupLayout(frame.getContentPane());
groupLayout.setHorizontalGroup(
    groupLayout.createParallelGroup(Alignment.TRAILING)
    .addGroup(Alignment.LEADING, groupLayout.createSequentialGroup()
      .addContainerGap()
      .addGroup(groupLayout.createParallelGroup(Alignment.LEADING)
        .addComponent(scrollPane, GroupLayout.DEFAULT_SIZE, 938, Short.MAX_VALUE)

所以你应该addComponent(table执行addComponent(scrollPane,而应该scrollPane.setHorizontalScrollBarPolicy( JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); scrollPane.setVerticalScrollBarPolicy( JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); 。现在,让我们看看两行。滚动窗格创建之后。

<ons-carousel swipeable overscrollable auto-scroll fullscreen initial-index="1" var="carousel">
    <ons-carousel-item style="background-color: gray;">
      <div class="item-label">GRAY</div>
    </ons-carousel-item>
    <ons-carousel-item style="background-color: #085078;">
      <div class="item-label">BLUE</div>
    </ons-carousel-item>
    <ons-carousel-item style="background-color: #373B44;">
      <div class="item-label">DARK</div>
    </ons-carousel-item>
    <ons-carousel-item style="background-color: #D38312;">
      <div class="item-label">ORANGE</div>
    </ons-carousel-item>
    <ons-carousel-cover>
      <div class="cover-label">Swipe left or right</div>
    </ons-carousel-cover>
  </ons-carousel>
</ons-page>

这些将为您提供您想要的精美外观。即使没有可滚动的内容,也会显示滚动条(已禁用)。

答案 1 :(得分:2)

只需创建JScrollPane并使用值将表格添加到其中...请参阅下面的示例。

public class MainView extends JFrame{

private JPanel mainPanel;
private JTable table;
private DefaultTableModel model_table;
private JScrollPane scroll_table;

public static void main(String[] args) {
    MainView main = new MainView();
    main.setVisible(true);
}   
public MainView() {
    mainPanel = new JPanel(null);
    setSize(500, 500);

    table = new JTable();
    model_table = new DefaultTableModel();
    model_table.addColumn("1");
    model_table.addColumn("2");
    model_table.addColumn("3");
    model_table.addColumn("4");
    table.setModel(model_table);

    for(int i=0;i<10;i++){                             // add value to table
           Vector<String> r  = new Vector<String>();
            r.addElement("a");
            r.addElement("b");
            r.addElement("c");
            r.addElement("d");
            model_table.addRow(r);
    } 

    scroll_table = new JScrollPane(table);            // add table to scroll panel
    scroll_table.setBounds(5, 10, 300, 150);
    scroll_table.setVisible(true);
    mainPanel.add(scroll_table);

    this.add(mainPanel);
  }
}