代码之家  ›  专栏  ›  技术社区  ›  KJW

JAVA Swing:相对定位和自动调整大小?

  •  2
  • KJW  · 技术社区  · 16 年前

    我有一个createUI()函数,它将jpanel加载到北、南、东。

    private void createUI() {
        add(createToolBar(), BorderLayout.NORTH);
        add(createDataView(), BorderLayout.SOUTH);
        add(createHistoryView(), BorderLayout.EAST);
    
        createMenuBar();
    
        setTitle("My Application");
    
    }
    

    但是,每个组件都显示在正确的位置,它们都是固定大小的jpanel。我想知道jpanel是否可以完全填充borderlayout区域。

    例如,createDataView()是一个简单的包含表的jpanel。我希望它水平扩展,并有一个固定的高度。

    private JPanel createDataView(){
            JPanel panel = new JPanel();
    
            String data[][] = {{"001","vinod","Bihar","India","Biology","65","First"},
                               {"002","Raju","ABC","Kanada","Geography","58","second"},
                               {"003","Aman","Delhi","India","computer","98","Dictontion"},
                               {"004","Ranjan","Bangloor","India","chemestry","90","Dictontion"},
                               {"004","Ranjan","Bangloor","India","chemestry","90","Dictontion"}};
            String col[] = {"Roll","Name","State","country","Math","Marks","Grade"};
            JTable table = new JTable(data,col);
            table.setPreferredScrollableViewportSize(new Dimension(900,100));
            JTableHeader header = table.getTableHeader();
            header.setBackground(Color.yellow);
            JScrollPane pane = new JScrollPane(table);
            table.setAutoResizeMode(JTable.WIDTH);
            table.doLayout();
            panel.add(pane);
            return panel;
    }                      
    

    现在我依靠手动设置尺寸。但是,我会找到一种方法来获取当前窗口宽度,并将其设置为如下所示。

    table.setPreferredScrollableViewportSize(new Dimension(900,100));
    
    2 回复  |  直到 16 年前
        1
  •  1
  •   trashgod    16 年前

    JPanel FlowLayout GridLayout A Visual Guide to Layout Managers

    JPanel panel = new JPanel(new GridLayout(1, 0));
    

    setAutoResizeMode() JTable.WIDTH JTable.AUTO_RESIZE_SUBSEQUENT_COLUMNS

    table.setAutoResizeMode(JTable.WIDTH);
    
        2
  •  1
  •   Codemwnci    16 年前