我正在学习java,我从一开始就开始了:)
我想在Panel上画线,但我不能
这是我的代码:
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);
}
}
和Panel类
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);
}
为什么我的组件在Panel下面? Sory这是我的代码
答案 0 :(得分:1)
解决方案:
答案 1 :(得分:1)
Panel
和Component
是AWT,JPanel
和JComponent
是Swing。 AWT不使用paintComponent
,而是使用paint
。将AWT类切换到Swing类或paintComponent
到paint
,它可能会有效。
这就是为什么将@Override
添加到重写方法是一个好主意,因为它告诉您paintComponent
不是Component
的方法。
您还要将组件和面板添加到同一容器中。将组件放在面板中。
p1.add(k); // yes (add this to your code)
pow.add(k); // no (remove this from your code)
pow.add(p1); // previous would get covered