我有以下代码,结果如图片所示(我未添加代码的重复部分)。面板以某种方式变色,但是布局设计的一部分。我想念什么?
class Elements extends JPanel {
Elements() {
setLayout(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
c.insets = new Insets(10, 10, 10, 10);
JLabel l1 = new JLabel("l1");
c.gridx = 0;
c.gridy = 0;
add(l1, c);
JLabel l2 = new JLabel("l2");
c.gridx = 0;
c.gridy = 1;
add(l2, c);
}
public class MyFrame extends JFrame {
public static void main(String[] args) {
JFrame frame = new JFrame("Simple Calc");
JPanel p = new JPanel();
Elements elements = new Elements();
frame.add(p);
p.add(elements);
frame.setSize(1000, 500);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
p.setBackground(Color.blue);
答案 0 :(得分:2)
您的Elements
类扩展了JPanel
。您会看到JPanel的默认颜色,因为您没有设置颜色。
您可以执行以下任一操作:
elements.setBackground( Color.BLUE );
专门设置背景。
或
elements.setOpaque( false );
使该面板透明,以便您看到其父面板的背景。这很容易,因此如果您决定更改背景,则不必两次设置背景。
答案 1 :(得分:1)
在面板p中,元素位于前景中。尝试做elements.setBackground(Color.blue);
来实现所需的行为。