いくつかの不透明なカスタムコンポーネントが実装されたJPanelがあります。ここで、paintComponent()メソッドをオーバーライドして、これらのコンポーネントの上に何かを描画したいと思います。私の問題は、ペイントされたものが埋め込まれたコンポーネントの後ろに配置され、不透明であるため、それらで覆われていることです。
コンポーネントの上に絵を表示させる方法はありますか?
これが私がやろうとしていることの短い例です:
public class DrawOnTop {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
JFrame f = new JFrame("Draw on top");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.add(new MyPanel());
f.pack();
f.setVisible(true);
}
});
}
}
class MyPanel extends JPanel {
public MyPanel() {
setLayout(new BorderLayout(3, 3));
add(new JButton("Button 1"), BorderLayout.NORTH);
add(new JButton("Button 2"), BorderLayout.CENTER);
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.red);
g.drawLine(0, 0, getVisibleRect().width, getVisibleRect().height);
}
}