gpt4 book ai didi

java - JPanel 与 JTextField 或 JLabel 不更新

转载 作者:搜寻专家 更新时间:2023-11-01 01:23:10 24 4
gpt4 key购买 nike

我试图找到答案,但我没有找到答案。我是 java 的新手。我有 4 个类(1 个主类带有 JFrame 和 3 个 JPanel)。主类创建 JFrame 并向其添加 3 个面板。我想要完成的是从另一个面板 (panelB) 中的 ActionEvent 更新 1 个面板 (panelA) 中的 JLabel 或 JTextField。panelB 中的 ActionEvent 运行 panelA 中的一个方法,该方法运行 setText() 方法和 repaint() 方法。我无法使用新文本更新 JLabel 或 JTextField。

这是我的代码:

应用程序.java

public class App {
public static void main(String[] args) {
JFrame nameFrame = new JFrame("Name Form");
nameFrame.setLayout(new BorderLayout());
nameFrame.setSize(300,150);
nameFrame.setLocationRelativeTo(null);
nameFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
MiddlePanel middlePanel = new MiddlePanel();
nameFrame.add(middlePanel, BorderLayout.CENTER);
BottomPanel bottomPanel = new BottomPanel();
nameFrame.add(bottomPanel, BorderLayout.SOUTH);
nameFrame.setVisible(true);
}
}

底部面板.java

import java.awt.FlowLayout;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class BottomPanel extends JPanel {
private JLabel welcomeLabel = new JLabel("Old Text");

BottomPanel() {
super(new FlowLayout());
add(welcomeLabel);
}
public void setText(String text) {
welcomeLabel.setText(text);
repaint();
}
}

中间面板.java

import java.awt.BorderLayout;
import javax.swing.JButton;
import javax.swing.JTextArea;
import javax.swing.JPanel;
import java.awt.event.*;
import java.awt.Graphics;

public class MiddlePanel extends JPanel {
MiddlePanel() {
super(new BorderLayout());

JButton okButton = new JButton("OK");
okButton.setSize(20, 20);
OKButtonListener okButtonListener = new OKButtonListener();
okButton.addActionListener(okButtonListener);

add(okButton, BorderLayout.EAST);
}
class OKButtonListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
BottomPanel bottomPanel = new BottomPanel();
bottomPanel.setText("New Text");
}
}
}

感谢您的帮助。

最佳答案

在您的 OKButtonListener 中,您创建了一个新的 BottomPanel 实例,它与您添加到 JFrame 的 BottomPanel 无关。您将需要在 JFrame 中添加的 BottomPanel 的实际引用。

关于java - JPanel 与 JTextField 或 JLabel 不更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9241334/

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