我需要帮助,在Java中使用textfields更改类的属性的值下面我有3个简化版本的代码来演示我遇到的问题。我在alpha,UIalpha和mainGUI类下有3个类。当我运行mainGUI类时,我需要用户单击窗口上的pc图像。这将创建UIaplha对象,以打开一个新框架。此框架具有应该能够更改mainGUI类中aplha类对象的name属性的文本框。我的代码工作到某个地方,我不知道如何解决它。我搜索了多次,尝试了很多种类的东西,但都没有为我工作。 pc image needed在java中使用textfields更改类的详细信息
Alpha.java
public class alpha{
String name;
public void setName(String n){
name=n;
}
public void print(){
System.out.println("name= "+name);
}
public static void main(String[] args){
alpha a=new alpha();
}
}
mainGUI.java
import java.awt.*; // this is used to access the GridLayout class
import java.awt.event.*;
import javax.swing.*;
public class mainGUI extends JComponent{
private static final int WIDTH = 400;
private static final int HEIGHT = 300;
private int PCHeight=40;
private int PCWidth=41;
int y=20,x=30;
private JButton pc1button;
private PCButtonHandler pcbHandler;
public mainGUI(){
JFrame frame=new JFrame("NETWORK EXAMPLE");
ImageIcon image = new ImageIcon("pc.png");
pc1button =new JButton(image);
//////////////////////////////////////////////////////////
pc1button.setOpaque(false);
pc1button.setContentAreaFilled(false);
pc1button.setBorderPainted(false);
pc1button.setBounds(y,x,PCHeight,PCWidth);
////////////////////////////////////////////////////////
pcbHandler=new PCButtonHandler();
pc1button.addActionListener(pcbHandler);
frame.setTitle("GUI example");
Container pane= frame.getContentPane();
pane.setLayout(null);
pane.setBackground(Color.WHITE);
pane.add(pc1button);
frame.setSize(WIDTH, HEIGHT);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public class PCButtonHandler implements ActionListener
{
String name;
public void actionPerformed(ActionEvent e)
{
alpha test=new alpha();
test.setName("WRONG");
test.print();
UIalpha help=new UIalpha(test);
test=help.updateObjects();
test.print();
}
}
public static void main(String[] args){
mainGUI work=new mainGUI();
}
}
UIalpha.java
import java.awt.*; // this is used to access the GridLayout class
import java.awt.event.*;
import javax.swing.*;
public class UIalpha extends JFrame{
String Name;
private JLabel nameL;
private JTextField nameTF;
boolean pressed=false;
private JButton enterbutton=new JButton("Enter");
private JFrame frame=new JFrame("PC");
alpha refrence;
public UIalpha(alpha test){
this.refrence=test;
nameL= new JLabel("Enter the name of alpha: ", SwingConstants.CENTER);
nameTF=new JTextField(10);
nameTF.setMaximumSize(new Dimension(500,20));
enterbutton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
refrence.setName(nameTF.getText());
// test.setName(nameTF.getText());
//test.print();
pressed=true;
}
});
Container pane= frame.getContentPane();
frame.setLayout(new BoxLayout(pane,BoxLayout.PAGE_AXIS));
pane.add(nameL);
pane.add(nameTF);
pane.add(enterbutton);
frame.setMinimumSize(new Dimension(300,200));
frame.setPreferredSize(new Dimension(600,200));
frame.setMaximumSize(new Dimension(660,200));
frame.setVisible(true);
}
public alpha updateObjects(){
return refrence;
}
}
'我的代码工作到某个地方,我不知道如何解决它'这不是很具体。什么实际上起作用,什么不起作用? – Deltharis
所以当我按下输入按钮时,它会更改传入的aplha对象。但该更改不会反射回mainGUI类中的alpha对象。什么即时尝试达到令人满意的是允许用户按下输入按钮,然后我可以在新闻后在mainGUI类中稍后使用更新对象。 –