簡體   English   中英

如何在Java swing中用背景色填充整個面板?

[英]How to fill entire panel with background color in Java swing?

我最近開始學習Java,現在嘗試與Swing合作,所以我對此還很陌生。 我正在嘗試使用(在此示例中)1行和1列制作gridbaglayout,因此我向布局中添加了具有某些背景顏色的JPanel,但是背景顏色似乎僅針對文本的長度而不是針對文本的長度出現。整個面板。 我希望背景色在整行中都保持不變,

另外,我必須添加第二個具有較大weightx的列,以確保面板不會自動居中,是否有更好的方法來實現呢?

這是我目前擁有的代碼,

      public static void main(String args[]) {
            JFrame mainFrame = new JFrame();
            mainFrame.setSize(900, 600);
            mainFrame.setLayout(new GridBagLayout());

            JPanel roll = new JPanel();
            roll.setBackground(new Color(190, 177, 245));

            JLabel wageChangeTag = new JLabel("Change");

            GridBagConstraints gRoll = new GridBagConstraints();

            gRoll.gridx = 0;
            gRoll.gridy = 0;
            gRoll.weightx = 5;
            gRoll.anchor = GridBagConstraints.CENTER;
            roll.add(wageChangeTag, gRoll);

            ////////////// MAIN GRID//////////////////
            GridBagConstraints gc = new GridBagConstraints();
            gc.gridx = 0;
            gc.gridy = 0;
            gc.weightx = 5;
            gc.anchor = GridBagConstraints.FIRST_LINE_START;
            gc.weighty = 5;
            mainFrame.add(roll, gc);

            gc.gridx++;
            gc.weightx = 0.1;
            mainFrame.add(new JLabel(), gc);

            mainFrame.setVisible(true);
            mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      }
}

您所看到的實際上是您所有的JPanel,與其中的標簽無關。 您可以通過在其中添加邊框(例如,在設置背景后立即看到它)來查看:

roll.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED));

現在要使其水平擴展,請嘗試在JPanel GridBagConstraints中添加以下行:

gc.fill = GridBagConstraints.HORIZONTAL;

暫無
暫無

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

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