Java 在GUI bUilder中重新验证JPanel

Java 在GUI bUilder中重新验证JPanel,java,swing,jpanel,Java,Swing,Jpanel,我正在用Gui builder重新绘制JPanel,请任何人帮我。 下面是在其构造函数中生成随机数的主类 public class Main { public static int q; public Main(){ Random randomGenerator = new Random(); for (int idx = 1; idx <= 10; ++idx) { q = randomGenerator.nextInt

我正在用Gui builder重新绘制JPanel,请任何人帮我。 下面是在其构造函数中生成随机数的主类

public class Main {
public static int q;
public Main(){

     Random randomGenerator = new Random();
            for (int idx = 1; idx <= 10; ++idx) {
                q = randomGenerator.nextInt(100);
            }
}
下面是一个类,它作为custome组件添加到类a中

public class Jpl extends JPanel {

public Jpl() {
    printMe(Main.q);
}


public int printMe(int q) {
        removeAll();
    for (int i = 0; i <q; i++) {
        System.out.println("rinting lable");
        String htmlLabel = "<html><font color=\"#A01070\">" + i + " New Lable </font></html>";
        JLabel lbl = new JLabel(htmlLabel);
        setLayout(new GridLayout(0, 1));
        add(lbl, Jpl.RIGHT_ALIGNMENT);
        lbl.setForeground(Color.BLUE);
        Border border = BorderFactory.createLineBorder(Color.lightGray);
        lbl.setBorder(border);
        lbl.add(new JSeparator(SwingConstants.HORIZONTAL));

        lbl.addMouseListener(new MouseAdapter() {

            @Override
            public void mousePressed(MouseEvent e) {
                JLabel label = (JLabel) e.getSource();
                JOptionPane.showMessageDialog(null, "You Slected");
                System.out.println(label.getText() + "NO AKKA is Selected");
            }
        });
    }

    revalidate();
    repaint();
    return 1;

}
公共类Jpl扩展了JPanel{
公共太平绅士({
printMe(Main.q);
}
公共int printMe(int q){
removeAll();

对于(inti=0;i一个问题:在ActionListener代码中,您创建了一个新的JPanel(或Jpl)对象:

但这绝对不可能是显示在GUI中的Jpl对象。是的,它是同一类的对象,但它是一个与显示的对象完全不同的全新对象,因此对其调用方法不会对显示的Jpl对象产生影响。解决方案是只在d上调用方法我无法告诉您如何获取对该对象的引用,因为我们不知道您显示该对象的代码的其余部分


另一个问题是,你在这篇文章中没有提出任何问题,因此我不知道我的建议是否会帮助你解决主要问题(但我知道它会解决一个问题)。因此,我建议您提出一个适当的问题,以便我们更好地理解这些问题,您可能需要发布更多代码。

一个问题:在ActionListener代码中,您创建了一个新的JPanel(或Jpl)对象:

但这绝对不可能是显示在GUI中的Jpl对象。是的,它是同一类的对象,但它是一个与显示的对象完全不同的全新对象,因此对其调用方法不会对显示的Jpl对象产生影响。解决方案是只在d上调用方法我无法告诉您如何获取对该对象的引用,因为我们不知道您显示该对象的代码的其余部分


另一个问题是,你在这篇文章中没有提出任何问题,因此我不知道我的建议是否会帮助你解决主要问题(但我知道它会解决一个问题)。因此,我建议您提出一个适当的问题,以便我们更好地了解问题,您可能需要发布更多的代码。

不清楚您在问什么,所以我只想就您代码中的问题发表评论

printMe()
返回一个
int
,但它总是相同的值,因此没有任何意义。只需将方法
设为void

String htmlabel=“New Label+i”
这将始终生成相同的字符串,并且不会为您提供
i
的值。相反,您需要
String htmlabel=“New Label”+i;


您在循环中创建的
JLabel
s上没有任何操作,因此在当前迭代结束后,将不再引用每个对象。在此过程中,您的
MouseListener
将永远不会被触发,因为您添加到其中的标签将永远不会出现在GUI中。

不清楚您要使用的标签是什么We’我们在问,所以我只想就代码中的问题发表评论

printMe()
返回一个
int
,但它总是相同的值,因此没有任何意义。只需将方法
设为void

String htmlabel=“New Label+i”
这将始终生成相同的字符串,并且不会为您提供
i
的值。相反,您需要
String htmlabel=“New Label”+i;


您在循环中创建的
JLabel
s上没有任何操作,因此在当前迭代结束后,将不再引用每个对象。在此过程中,您的
MouseListener
将永远不会被触发,因为您添加它的标签将永远不会出现在GUI中。

除了这些问题之外其他人提到:

您正在创建标签,但未将其添加到JPanel。请尝试以下操作:

JLabel lbl = new JLabel(htmlLabel);
this.add(lbl);

除了其他人提到的问题外:

您正在创建标签,但未将其添加到JPanel。请尝试以下操作:

JLabel lbl = new JLabel(htmlLabel);
this.add(lbl);

抱歉,我已经添加了,实际上我忘记了正确的代码,但是我已经有add()方法removeAll();用于(int i=0;i@Qaiser:如果您有更多信息或代码,请编辑您的问题。此注释没有帮助,因为它没有给出任何上下文,说明它在OP代码中的位置。并且未格式化时很难阅读。抱歉,我已经添加了,实际上我忘记了正确的代码,但我已经添加了()方法removeAll();for(int i=0;i@Qaiser):如果您有更多信息或代码,请编辑您的问题。此注释没有帮助,因为它没有提供任何上下文,说明它在OP代码中的位置。如果没有格式化,则很难阅读。“实际上我忘了粘贴正确的代码"--很好,您仍然需要问一个可行的问题。是否要纠正这些缺陷?实际上,我正在将此JPanel作为自定义JPanel添加到我的另一个类中,如果我单击按钮时此JPanel出现新值,我希望更新此面板。您可以说与Available wireless network的刷新按钮相同。这与我所说的完全相同我试图在我的gui页面中使用NetbeansLet我重复我自己的话:请编辑您的原始帖子,粘贴正确的代码,并提出一个可行的问题。请告诉我如何提出这个请求,使您相信它会对您和我们都有帮助。我已经编辑了我的代码。但问题很简单,在gui builder pa中ge如何更新custome JPanel组件。当我单击按钮时,新值应以日语显示。我希望这次您能选择我的问题。谢谢。“实际上我忘记粘贴正确的代码了”--太好了,您仍然需要问一个可行的问题。是否要纠正这些缺陷?actull
JLabel lbl = new JLabel(htmlLabel);
this.add(lbl);