我需要幫助,在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類中稍後使用更新對象。 –