簡體   English   中英

JAVA:在GridBagLayout上對齊

[英]JAVA: Alignment on GridBagLayout

我正在尋找Teamspeak3的疊加...

問題是,我無法根據需要對齊JTable

截圖:

http://you-belge.eu/files/2014-03-21_230603.jpg

我希望表格(屏幕上有2個名稱)在左上方

這是我的代碼:

public void setPanelContent(Object[][] clientList, Object[][] msgList)
{

    JPanel jp_ = new JPanel();

    jp_.setLayout(new GridBagLayout());

    GridBagConstraints g = new GridBagConstraints();

    g.gridx = 1;
    //g.fill = GridBagConstraints.HORIZONTAL;
    g.anchor = GridBagConstraints.FIRST_LINE_START;
    g.weightx = 1;

    String  title[] = {"A", "B"};
    JTable tableau = new JTable(clientList, title);


    tableau.setTableHeader(null);
    tableau.setRowHeight(20);
    tableau.setShowGrid(false);
    tableau.setEnabled(false);

    // tableau.setOpaque(false);
    ((DefaultTableCellRenderer)tableau.getDefaultRenderer(Object.class)).setOpaque(false);

    tableau.getColumn("A").setMaxWidth(30);
    tableau.getColumn("B").setMinWidth(210);
    // tableau.getColumn("B").setMaxWidth(520);
    tableau.getColumnModel().getColumn(0).setCellRenderer(new ImageRenderer());

    jp_.add(tableau, g);
    jp_.setBackground(Color.CYAN); // for test

    jp_.setPreferredSize(new Dimension(jp.getWidth(), jp.getHeight()));

    jp.removeAll();
    jp.invalidate();

    jp.add(jp_);
    jp.updateUI();
    this.repaint();
}
  • 如果希望表內容位於左上角(而不是表本身,因為它將占用所有GridBagLayout垂直空間),則可以通過添加以下內容來擴展此JTable高度:

     g.fill = GridBagConstraints.VERTICAL; g.weighty = 1; 
  • 如果您希望表格本身位於左上角,則可以使用以下方法:

     g.anchor = GridBagConstraints.NORTHWEST; g.weighty = 1; 

嘗試在窗口頂部(BorderLayout.NORTH)中創建一個JPanel,在剛用BorderLayout WEST創建的JPanel中創建一個新的JPanel,然后在最后一個JPanel中將JTable添加到現場。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM