gpt4 book ai didi

java - 从另一个更改 jpanel 的颜色

转载 作者:行者123 更新时间:2023-11-30 05:51:21 25 4
gpt4 key购买 nike

我有一个由两个 JPanels

组成的框架

Panel1 包含一个按钮,单击该按钮时我希望 panel2 的颜色发生变化并变为红色,但这并没有发生

关于如何从另一个面板更改面板颜色的任何帮助和解释

 public class MyForm extends JFrame {
public MyForm() {
// TODO Auto-generated constructor stub
super();
// setLayout(new FlowLayout());
Panel1 panel1 = new Panel1();
add(panel1, BorderLayout.NORTH);

Panel2 panel2 = new Panel2();
add(panel2, BorderLayout.CENTER);
}

class Panel1 extends JPanel {

public Panel1() {
// TODO Auto-generated constructor stub

JButton btn = new JButton("Change Color");
add(btn);
btn.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
System.out.println("Sqsq");
Panel2 panel2 = new Panel2();
panel2.setBackground(Color.red);
panel2.repaint();

}
});
}
}

class Panel2 extends JPanel {
public Panel2() {
// TODO Auto-generated constructor stub
super();
setBackground(Color.black);

}

@Override
protected void paintComponent(Graphics g) {
// TODO Auto-generated method stub
super.paintComponent(g);
}
}

public static void main(String[] args) {
MyForm form = new MyForm();
// form.setLocationRelativeTo(null);
form.setSize(500, 500);
form.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
form.setVisible(true);

}
}

最佳答案

首先,在您的btn actionPerformed 方法中,您正在创建一个 Panel2,它是不一样的作为添加到框架中的引用,因此,不会有任何改变...

您需要传递 Panel1 并引用您要更新的组件...

class Panel1 extends JPanel {

private JComponent changeMe;

public Panel1(JComponent changeMe) {
this.changeMe = changeMe;
// TODO Auto-generated constructor stub

JButton btn = new JButton("Change Color");
add(btn);
btn.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
System.out.println("Sqsq");
if (changeMe != null) {
changeMe.setBackground(Color.red);
changeMe.repaint();
}

}
});
}
}

您可能需要请求重绘父容器,但看看情况如何...

关于java - 从另一个更改 jpanel 的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12880512/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com