我正在学习Java,并且从头开始:)

我想在面板上画线,但是我不能

这是我的代码:

public class Window extends JFrame{

    public Window(){
        setSize(600,600);
    this.setDefaultCloseOperation(EXIT_ON_CLOSE);

    Container pow = getContentPane();
    Component k = new Test();
    pow.add(k);

    Panel p1 = new Panel();
    p1.setBounds(40, 40, 520, 520);
    p1.setBackground(Color.white);
    pow.add(p1);
}
}


和小组班

import java.awt.*;
import javax.swing.*;

public class Test extends JPanel{

public void paintComponent(Graphics g){
    g.drawLine(30, 50, 30, 550);
    g.drawLine(30, 550, 550, 550);

    g.drawLine(30, 50, 20, 60);
    g.drawLine(30, 50, 40, 60);

    g.drawLine(550, 550, 540, 540);
    g.drawLine(550, 550, 540, 560);
}

}


和主要

    public static void main(String[] args){
    Window mo = new Window();
    mo.setVisible(true);
}


为什么我的组件位于面板下?
对不起,这是我的代码

最佳答案

contentPane使用BorderLayout作为其默认布局。
当您将组件添加到BorderLayout容器而不指定位置时,将添加BorderLayout.CENTER。
然后,它将掩盖以前添加到同一位置的所有其他组件。


解:


阅读并尝试使用其他布局管理器。检查this tutorial
不要setBounds或使用空布局。

09-25 21:05