Как заполнить всю панель цветом фона в Java swing? - PullRequest
0 голосов
/ 17 апреля 2019

Я недавно начал изучать Java, и сейчас пытаюсь работать с Swing, так что я все еще новичок в этом. Я пытаюсь сделать gridbaglayout с (в этом примере) 1 строкой и 1 столбцом, поэтому я добавил 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);
      }
}

1 Ответ

1 голос
/ 17 апреля 2019

То, что вы видите нарисованным, - это на самом деле вся ваша JPanel, ничего общего с вашим ярлыком внутри. Это можно увидеть, например, добавив к нему границу (сразу после установки фона:

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

Теперь, чтобы развернуть его горизонтально, попробуйте добавить следующую строку в JPanel GridBagConstraints:

gc.fill = GridBagConstraints.HORIZONTAL;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...