gpt4 book ai didi

java - 将 JFrame.getText() 从一个类成员传递给另一个类成员?

转载 作者:行者123 更新时间:2023-11-30 04:22:06 24 4
gpt4 key购买 nike

在此代码中,我使用了 3 个类,它们都扩展了 JPanel 类,这些类的实例被添加到 JForm3 类的构造函数中的 JFrame 中。

我想知道是否有办法在 printTextOnConsole() 中显示文本字段中存在的文本(在 TextPanel 类中声明的 JTextField 实例) ButtonPanel 类中的 方法。

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

public class JForm3
{
JFrame frame;
ButtonPanel bP;
TextPanel tP;
LabelPanel lP;
public JForm3()
{
frame = new JFrame("Java Window.");
bP = new ButtonPanel();
tP = new TextPanel();
lP = new LabelPanel();

frame.setSize(500,100);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.getContentPane().add(BorderLayout.CENTER,tP);
frame.getContentPane().add(BorderLayout.EAST,bP);
frame.getContentPane().add(BorderLayout.WEST,lP);

frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
public static void main(String[] args)
{
new JForm3();
}
}
class ButtonPanel extends JPanel implements ActionListener
{
JButton quitButton;
JButton printButton;
public ButtonPanel()
{
quitButton = new JButton("Quit");
printButton = new JButton("Print");

quitButton.addActionListener(this);
printButton.addActionListener(this);


this.setLayout(new BoxLayout(this,BoxLayout.Y_AXIS));
this.add(quitButton);
this.add(printButton);
}
public void actionPerformed(ActionEvent event)
{
if(event.getSource() == quitButton)
System.exit(0);
else
printTextOnConsole();
}
public void printTextOnConsole()
{

}
}
class LabelPanel extends JPanel
{
JLabel label;
public LabelPanel()
{
this.setLayout(new BorderLayout());
label = new JLabel("Enter Some Text :");
this.add(BorderLayout.CENTER,label);
this.setVisible(true);
}
}
class TextPanel extends JPanel
{
JTextField textField;
public TextPanel()
{
this.setLayout(new BorderLayout());
textField = new JTextField("Enter text here");
this.add(BorderLayout.CENTER,textField);
this.requestFocus();
textField.select(0,textField.getText().length());
this.setVisible(true);
}

}

最佳答案

使用接口(interface)来松散耦合 JPanels 之间的文本功能。

interface TextRetriever {
String getText();
}

然后将 TextRetriever (TextPanel) 的实例传递给 ButtonPanel

class ButtonPanel extends JPanel implements ActionListener {
private TextRetriever textRetriever;

public ButtonPanel(TextRetriever textRetriever) {
this.textRetriever = textRetriever
...
}

public void printTextOnConsole() {
String text = textRetriever.getText();
}
}

关于java - 将 JFrame.getText() 从一个类成员传递给另一个类成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16814906/

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