Java 添加两个Jtable';s到JScrollPane

Java 添加两个Jtable';s到JScrollPane,java,swing,jtable,jscrollpane,Java,Swing,Jtable,Jscrollpane,如何使用setViewPortView()选项在JScrollPane中并排添加两个JTable,并根据分配给JScrollPane的大小设置表的大小 如何在JScrollPane中使用 setViewPortView()选项并设置表的大小 指定给JscrollPane的大小 JScrollPane被指定只嵌套一个JComponent JScrollPane只能包含一个JComponent,但您可以将表包装到JPanel并将其添加到JScrollPane,如下所示: import java.a

如何使用setViewPortView()选项在JScrollPane中并排添加两个JTable,并根据分配给JScrollPane的大小设置表的大小

如何在JScrollPane中使用 setViewPortView()选项并设置表的大小 指定给JscrollPane的大小

  • JScrollPane
    被指定只嵌套一个
    JComponent

JScrollPane
只能包含一个
JComponent
,但您可以将表包装到
JPanel
并将其添加到
JScrollPane
,如下所示:

import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;


public class TestFrame extends JFrame{

    public TestFrame(){
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        init();
        pack();
        setVisible(true);
    }

    private void init() {
      JTable t1 = new JTable(10,5);
      JTable t2 = new JTable(15,5);
      JPanel p = new JPanel(new GridBagLayout());
      GridBagConstraints c = new GridBagConstraints();
      c.anchor = GridBagConstraints.NORTHWEST;
      c.insets =  new Insets(0,5,0,5);
      c.gridy=0;
      c.gridx=0;
      p.add(t1.getTableHeader(),c);
      c.gridx=1;
      p.add(t2.getTableHeader(),c);
      c.gridx=0;
      c.gridy=1;
      p.add(t1,c);
      c.gridx=1;
      p.add(t2,c);
      add(new JScrollPane(p));
    }


    public static void main(String... strings) {
        new TestFrame();
    }

}

如图所示,让每个表占据自己的滚动窗格。让一个窗格始终显示滚动条,而另一个窗格从不显示滚动条。然后让两个滚动条共享一个公共的
BoundedRangeModel

,方法是将两个JTables放入一个JPanel并使用MigLayout作为布局管理器。您尝试过什么吗?您应该有两个滚动窗格。每张桌子一张。否则,您所做的事情就没有意义了。没错,但是两个滚动条可以共享一个公共模型。例如,我认为您必须使用父JScrollPane中的()事件,并从MouseInfo重定向此事件,从Mouse Scroll指向光标下的JScrollPane,或从SwingUtilities指向JScrollPane的等效对象,否则,家长会消耗每一个鼠标事件,这就是为什么我对空问题+1的简短回答可能(我喜欢)的原因之一,但这里没有人要求同步滚动:-)