JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(new Dimension(500,500));
JLayeredPane layers = new JLayeredPane();
JPanel p1,p2;
p1=new JPanel();
p2=new JPanel();
p1.setBounds(0,0,200,200);
p2.setBounds(0,0,200,200);
p1.setOpaque(false);
p2.setOpaque(false);
layers.setLayer(p1,new Integer(0));
layers.setLayer(p2,new Integer(1));
layers.add(p1);
layers.add(p2);
f.add(layers);
f.setVisible(true);
Graphics2D gr = (Graphics2D) p2.getGraphics();
gr.setColor(Color.BLACK);
gr.drawLine(10,10,20,20);
我试图在 JLayeredPane 内的 JPanel 上绘图,但没有绘制任何内容。如果我将一个组件(JButton)添加到 p1 或 p2,它将被绘制。
在 JLayeredPane 中绘制的正确方法是什么?
最佳答案
您不能只在外部绘制图形上下文,它并不像您所期望的那样持久。相反,您需要重写 JPanel 中的 JComponent.paintComponent(Graphics g) 。尝试这个。理想情况下,您可以将 JPanel 子类化为单独的类。
一个好的 Oracle 教程是“Perform custom painting”
p2=new JPanel() {
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D gr = (Graphics2D) g;
gr.setColor(Color.BLACK);
gr.drawLine(10,10,20,20)
}
}
关于Java:在 JLayeredPane 内的 JPanel 上画线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27329749/