gpt4 book ai didi

java - JFrame 一遍又一遍地打开

转载 作者:行者123 更新时间:2023-12-01 12:24:18 24 4
gpt4 key购买 nike

我在使用这个程序时遇到了问题。一切正常,但程序不断地一遍又一遍地打开 JFrame(显然,我只想打开一个 JFrame)。我的代码有什么问题吗?

预先感谢您,斯特凡

 import java.util.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class ColoredWords {
JFrame frame;
JPanel controlPanel, wordsPanel;
JButton match, nomatch;

ColoredWords() {

SwingUtilities.invokeLater( new Runnable() {
@Override
public void run() {
frame = new JFrame("Colored Words Experiment");
wordsPanel = new JPanel();
controlPanel = new JPanel();
frame.setLayout(new BorderLayout());
frame.add(wordsPanel, BorderLayout.NORTH);
frame.add(controlPanel, BorderLayout.SOUTH);
frame.setSize(1000, 600);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
match = new JButton("Matching");
nomatch = new JButton("Non-Matching");
controlPanel.add(match, BorderLayout.WEST);
controlPanel.add(nomatch, BorderLayout.CENTER);
ClicksReporter clicksreporter;
clicksreporter = new ClicksReporter();
match.addActionListener(clicksreporter);
nomatch.addActionListener(clicksreporter);
}
} );
}


class ClicksReporter extends ColoredWords implements ActionListener {
Labeling labeling = new Labeling();
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand().equals("Matching")) {
wordsPanel.add(labeling);
} else if (e.getActionCommand().equals("Non-Matching")) {
wordsPanel.add(labeling);
}
}
}


public static void main(String[] arg) {
new ColoredWords();
}
}

class Labeling extends JPanel {
JLabel[] labelsList = new JLabel[20];
int i = 0;

public Labeling() {
while (i < 5) {
labelsList[i] = new JLabel("black");
setLayout(new FlowLayout(FlowLayout.CENTER, 10, 10));
labelsList[i].setOpaque(true);
labelsList[i].setBackground(Color.white);
add(labelsList[i]);
i++;
}
}
}

最佳答案

问题是当您在 main() 内实例化 ClicksReporter 时。这是因为它继承了 ColoredWords 的构造函数,在实例化时调用它。为了避免这种情况,您可以将程序代码从构造函数中取出并放入另一个方法中,例如 execute()run()。然后您可以相应地调整您的程序以在 main() 中调用此方法。

关于java - JFrame 一遍又一遍地打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26469621/

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