我的挥杆有什么问题吗?程序。我在这里搜索过,但是没有答案,所以我发布了这个。
这里是示例代码:
public class main{
private static JFrame frame;
private static JLayeredPane layered;
private static JPanel panel1;
private static JPanel panel2;
private static JPanel bg_change;
private static JLabel txt_bg;
private static JLabel txt_change;
private static JButton btnBG;
private static JButton btnTEXT;
public static void main(String[] args) {
frame = new JFrame();
frame.setBounds(0,0,500,500);
frame.setVisible(true);
frame.setLayout(null);
layered = new JLayeredPane();
layered.setBounds(0,0,frame.getWidth(),frame.getHeight());
layered.setLayout(null);
layered.setOpaque(true);
layered.setBackground(Color.GRAY);
frame.add(layered);
panel1 = new JPanel();
panel1.setBounds(10,10,300,300);
panel1.setOpaque(true);
panel1.setLayout(null);
panel1.setBackground(Color.RED);
layered.add(panel1,0);
btnBG = new JButton("BTN_BG");
btnBG.setBounds(100,50,0,0);
btnBG.setSize(btnBG.getPreferredSize());
panel1.add(btnBG);
btnTEXT = new JButton("BTN_TXT");
btnTEXT.setBounds(100,100,0,0);
btnTEXT.setSize(btnTEXT.getPreferredSize());
panel1.add(btnTEXT);
panel2 = new JPanel();
panel2.setBounds(50,50,300,300);
panel2.setOpaque(true);
panel2.setLayout(null);
panel2.setBackground(Color.BLUE);
layered.add(panel2,1);
bg_change = new JPanel();
bg_change.setBounds(240,240,50,50);
bg_change.setOpaque(true);
bg_change.setLayout(null);
bg_change.setBackground(Color.ORANGE);
txt_change = new JLabel("TESTTESTETST");
txt_change.setBounds(240,30,0,0);
txt_change.setSize(txt_change.getPreferredSize());
txt_change.setOpaque(false);
panel2.add(bg_change);
panel2.add(txt_change);
frame.repaint();
addListner();
}
public static void addListner() {
btnBG.addMouseListener(new MouseListener() {
@Override
public void mouseReleased(MouseEvent e) {
}
@Override
public void mousePressed(MouseEvent e) {
}
@Override
public void mouseExited(MouseEvent e) {
}
@Override
public void mouseEntered(MouseEvent e) {
}
@Override
public void mouseClicked(MouseEvent e) {
bg_change.setBackground(Color.GREEN);
}
});
btnTEXT.addMouseListener(new MouseListener() {
@Override
public void mouseReleased(MouseEvent e) {
}
@Override
public void mousePressed(MouseEvent e) {
}
@Override
public void mouseExited(MouseEvent e) {
}
@Override
public void mouseEntered(MouseEvent e) {
}
@Override
public void mouseClicked(MouseEvent e) {
txt_change.setText("CLICKCLICKCLICKK");
txt_change.setSize(txt_change.getPreferredSize());
}
});
}
}
单击按钮,然后每个目标组件将更改其背景色或文本。按钮工作,但我希望目标组件留在红色面板后面。我该怎么办?
感谢阅读。
两个问题:
Container.add(…)
API,了解不同的重载方法,以了解“ int”和“ Object”之间的区别,作为add(…)方法的参数。有几处变更:
//layered.add(panel1, 0);
layered.add(panel1, new Integer(1));
...
//layered.add(panel2,1);
layered.add(panel2, new Integer(0));
而且,您不应该使用所有静态变量和方法。这表明设计不佳。
我建议您阅读Swing教程的How to Use Layered Panes部分,以获取更多信息和结构更好的代码示例。