【问题标题】:Adding two Jtable's to a JScrollPane将两个 Jtable 添加到 JScrollPane
【发布时间】:2014-05-15 02:14:54
【问题描述】:

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

【问题讨论】:

  • 也许通过将两个 JTable 放入 JPanel 并使用 MigLayout 作为布局管理器。
  • 你有没有尝试过?
  • 你应该有两个滚动窗格。每张桌子一个。否则你在做什么是没有意义的。

标签: java swing jtable jscrollpane


【解决方案1】:

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

【讨论】:

【解决方案2】:

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();
    }

}

【讨论】:

    【解决方案3】:

    如何在 JScrollPane 中并排添加两个 JTable setViewPortView() 选项并设置表的大小 到分配给 JscrollPane 的大小

    • JScrollPane 被指定只嵌套一个 JComponent

    【讨论】:

    • 是的,但是两个滚动条可以共享一个公共模型,example
    • 我认为您必须从父 JScrollPane 中消费()事件,并将此事件从 MouseInfo、从鼠标滚动指向或等效从 SwingUtilities 重定向到光标下的 JScrollPane,否则要使用父级每个鼠标事件,原因之一是我对空问题的简短回答
    猜你喜欢
    • 2013-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多