我正在编写一个应用程序,我需要从GUI获取两个String
对象到nullObject
类。
我对编程比较陌生,我正在努力学习。如果你有任何关于如何做到这一点的提示,我真的很感激!
我的GUI类:
package com.giuly.jsoncreate;
public class GUI {
private JFrame startFrame;
private JFrame chkFrame;
private JFrame osFrame;
private JFrame appVFrame;
private JPanel controlPanel;
private JButton nextPage;
private JButton cancel;
private JButton save;
public GUI() {
generateGUI();
}
public static void main(String[]args) {
GUI gui = new GUI();
}
public void generateGUI() {
//Creation of the First Frame
startFrame = new JFrame("JSCON Creator");
startFrame.setSize(1000, 700);
startFrame.setLayout(new FlowLayout());
startFrame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
//Panel Creation
controlPanel = new JPanel();
controlPanel.setLayout(new FlowLayout());
//Button Creation
cancel = new JButton("Cancel");
cancel.setSize(100, 100);
cancel.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
nextPage = new JButton("Next");
nextPage.setSize(100, 100);
nextPage.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
startFrame.setVisible(false);
showText();
}
});
startFrame.add(controlPanel);
startFrame.add(cancel);
startFrame.add(nextPage);
startFrame.setVisible(true);
startFrame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
public void showText() {
JFrame textFrame = new JFrame();
textFrame.setSize(1000, 700);
textFrame.setTitle("Text");
textFrame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
JPanel textPanel = new JPanel();
JLabel titleLabel = new JLabel("Title");
textPanel.add(titleLabel);
JLabel descrLabel = new JLabel("Description");
JTextField tfTitle = new JTextField("",15);
tfTitle.setForeground(Color.BLACK);
tfTitle.setBackground(Color.WHITE);
JTextField tfDescr = new JTextField("",30);
tfDescr.setForeground(Color.BLACK);
tfDescr.setBackground(Color.WHITE);
textPanel.add(tfTitle);
textPanel.add(descrLabel);
textPanel.add(tfDescr);
JButton buttonOK = new JButton("OK");
textPanel.add(buttonOK);
buttonOK.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String jsonTitle = tfTitle.getText();
String jsonDescr = tfDescr.getText();
System.exit(0);
}
});
textFrame.add(textPanel);
textFrame.setVisible(true);
}
我希望将字符串jsonTitle
和jsonDescr
放到另一个类中,这样我就可以存储它们。最后我将有一些字符串,我需要将它们保存在JSON文件中。我需要一种方法来获得这两个字符串,你们有什么建议吗?
答案 0 :(得分:1)
Erick对他的回答是正确的。只是想我应该添加其他信息。如果您使用jstonTitle
声明jsonDescr
和private
与其他字段一样,您仍然无法从其他类访问这些字段。编写字段的getter以及在GUI
顶部声明它们应该可以解决您的问题。然后在您的其他类中创建GUI
的实例并调用该方法。
public String getJsonTitle(){
return this.jsonTitle;
}
答案 1 :(得分:0)
您在jstonTitle
方法中声明jsonDescr
和actionPerformed()
。这意味着只要actionPerformed()
退出,您就会丢失这些变量。您需要在封闭的上下文中声明它们。例如,您可以在GUI
类上创建它们。仍然在actionPerformed()
中分配它们,但在GUI
的顶部声明startFrame
,chkFrame
等等。
这样您就可以在GUI
内的任何位置访问这些值。
哦,BTW,摆脱System.exit(0);
。 (你真的试过运行你的程序吗?)