是否可以将z索引设置为java图形?
我实现了一个时钟,其中秒针和分针扩展了同一个组件JClockHand。我有这样的死刑, 但这不是我想要的。我想知道是否有任何可能的方法来设置图形z索引以重叠不同的图形?提前谢谢 sechand.png minhand.png是否可以将z索引设置为java图形?,java,swing,Java,Swing,我实现了一个时钟,其中秒针和分针扩展了同一个组件JClockHand。我有这样的死刑, 但这不是我想要的。我想知道是否有任何可能的方法来设置图形z索引以重叠不同的图形?提前谢谢 sechand.png minhand.png 使用JLayeredPane。像这样 public ClockFrame(){ int frameWidth = 1000; int frameHeight = 1000; setDefaultCloseOperation(JFrame.EXIT_O
使用JLayeredPane。像这样
public ClockFrame(){
int frameWidth = 1000;
int frameHeight = 1000;
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setPreferredSize(new Dimension(frameWidth, frameHeight));
setLayout(new BorderLayout());
JLayeredPane pane = new JLayeredPane();
pane.setOpaque(true);
pane.setBackground(Color.BLACK);
add(pane);
SecondHand sHand=new SecondHand("sechand.png");
MinuteHand mHand=new MinuteHand("minhand.png");
mHand.setBounds(0, 0, frameWidth, frameHeight);
sHand.setBounds(0, 0, frameWidth, frameHeight);
pane.add(mHand, 1);
pane.add(sHand, 2);
pack();
setResizable(false);
setVisible(true);
}
您必须手动设置JLayeredPane组件的位置和大小,因为JLayeredPane不是LayoutManager
引用了一些方法。除非这是为了练习(尽管我怀疑:练习什么?),否则你应该在一个组件中画手。是的,这是一种练习。我打算将渲染和左渲染分开,由基本组件完成。我本来打算这么做的,我试着用JLayeredPane替换原来的面板,但是2个JComponent仍然坚持占据他们喜欢的大小的2个不同维度。我认为问题可能在于ClockHand的原始设置。相关帖子,或者是
GridBagLayout
:PMy的建议,如果你想学习swing,那就停下来学习Java FX吧。它更强大
public ClockFrame(){
int frameWidth = 1000;
int frameHeight = 1000;
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setPreferredSize(new Dimension(frameWidth, frameHeight));
setLayout(new BorderLayout());
JLayeredPane pane = new JLayeredPane();
pane.setOpaque(true);
pane.setBackground(Color.BLACK);
add(pane);
SecondHand sHand=new SecondHand("sechand.png");
MinuteHand mHand=new MinuteHand("minhand.png");
mHand.setBounds(0, 0, frameWidth, frameHeight);
sHand.setBounds(0, 0, frameWidth, frameHeight);
pane.add(mHand, 1);
pane.add(sHand, 2);
pack();
setResizable(false);
setVisible(true);
}