Java 在JTabbedPane中更新JComponent
我有一个JTabbedPane,看起来像这样:Java 在JTabbedPane中更新JComponent,java,swing,button,user-interface,action,Java,Swing,Button,User Interface,Action,我有一个JTabbedPane,看起来像这样: overview= new JTabbedPane(); JComponent accountinfo= AccountOverview(guest.toString()); overview.addTab ("Account Overview", accountinfo); overview.setMnemonicAt(0, KeyEvent.VK_1);
overview= new JTabbedPane();
JComponent accountinfo= AccountOverview(guest.toString());
overview.addTab ("Account Overview", accountinfo);
overview.setMnemonicAt(0, KeyEvent.VK_1);
JFrame tabbed= new JFrame("AIR Reservation");
tabbed.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
tabbed.add(overview);
tabbed.setSize(650,500);
tabbed.setLocationRelativeTo(null);
tabbed.setVisible(true);
}
JPanel panel = new JPanel(false);
JLabel filler = new JLabel(text);
JButton editName= new JButton ("Edit Name");
editName.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
JFrame nameframe= new JFrame("Name Edit");
String name = JOptionPane.showInputDialog(nameframe, "Change name to: ");
guest.setName(name);
}
});
JButton editGender= new JButton ("Edit Gender");
editGender.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
JFrame genderframe= new JFrame("Gender Edit");
String gender = JOptionPane.showInputDialog(genderframe, "Change gender to: ");
guest.setGender(gender);
}
});
JButton editBirthday= new JButton ("Edit Birthday");
editBirthday.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
JFrame birthdayframe= new JFrame("Birthdate Edit");
String birthday = JOptionPane.showInputDialog(birthdayframe, "Change birthdate to: ");
guest.setBirthDate(birthday);
}
});
JButton editPassportNumber= new JButton ("Edit Passport Number");
editPassportNumber.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
JFrame passportframe= new JFrame("Passport Number Edit");
int passnum= Integer.parseInt(JOptionPane.showInputDialog(passportframe, "Change passportnumber to: "));
guest.setPassportNumber(passnum);
}
});
panel.add(editName);
panel.add(editGender);
panel.add(editBirthday);
panel.add(editPassportNumber);
panel.add(destination);
filler.setHorizontalAlignment(JLabel.CENTER);
panel.add(filler);
return panel;
}
toString打印出客户的信息。
my AccountOverview(guest.toString)方法如下所示:
overview= new JTabbedPane();
JComponent accountinfo= AccountOverview(guest.toString());
overview.addTab ("Account Overview", accountinfo);
overview.setMnemonicAt(0, KeyEvent.VK_1);
JFrame tabbed= new JFrame("AIR Reservation");
tabbed.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
tabbed.add(overview);
tabbed.setSize(650,500);
tabbed.setLocationRelativeTo(null);
tabbed.setVisible(true);
}
JPanel panel = new JPanel(false);
JLabel filler = new JLabel(text);
JButton editName= new JButton ("Edit Name");
editName.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
JFrame nameframe= new JFrame("Name Edit");
String name = JOptionPane.showInputDialog(nameframe, "Change name to: ");
guest.setName(name);
}
});
JButton editGender= new JButton ("Edit Gender");
editGender.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
JFrame genderframe= new JFrame("Gender Edit");
String gender = JOptionPane.showInputDialog(genderframe, "Change gender to: ");
guest.setGender(gender);
}
});
JButton editBirthday= new JButton ("Edit Birthday");
editBirthday.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
JFrame birthdayframe= new JFrame("Birthdate Edit");
String birthday = JOptionPane.showInputDialog(birthdayframe, "Change birthdate to: ");
guest.setBirthDate(birthday);
}
});
JButton editPassportNumber= new JButton ("Edit Passport Number");
editPassportNumber.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
JFrame passportframe= new JFrame("Passport Number Edit");
int passnum= Integer.parseInt(JOptionPane.showInputDialog(passportframe, "Change passportnumber to: "));
guest.setPassportNumber(passnum);
}
});
panel.add(editName);
panel.add(editGender);
panel.add(editBirthday);
panel.add(editPassportNumber);
panel.add(destination);
filler.setHorizontalAlignment(JLabel.CENTER);
panel.add(filler);
return panel;
}
我想编辑JComponent,以便选项卡窗格反映新更新的更改。
例如,如果原始显示为“Name:Admin”,只需单击“编辑名称”并输入“John”即可将原始显示更改为“Name:John”
编辑:My toString()方法(来自另一个类Customer)
//以字符串形式返回客户对象。
公共字符串toString()
{
customerstring=“Name:”+getName();
customerstring+=“
性别:”+getGender();
customerstring+=“
出生日期:”+getBirthDate();
customerstring+=”
护照号码:“+getPassportNumber();
customerstring+=“
余额:”+money.format(getMoney());
返回customerstring;
}
如何编辑我的代码
提前谢谢 In:
JComponent accountinfo=AccountOverview(guest.toString())代码>处理信息以创建组件
这将生成一份来宾信息的副本(通过调用toString()),以后无法更改。尝试将来宾对象传递给组件,并在每次重新绘制时执行toString()调用
编辑后,可以通过调用accountinfo.repaint()来重新绘制组件本身。@hovercraftfullofels抱歉,toString方法是另一个类的一部分。我已经编辑了我的帖子,加入了这个方法。我最初发布的代码来自我的GUI类。非常感谢!如何将来宾对象传递给我的组件呢?在AccountOverview()方法中,您创建了一个Jcomponent。我建议创建一个类(扩展Jpanel或您使用的任何东西),它有一个FieldGuest。而不是当客人改变时:让它重新绘制/重新填充无论你做什么来创建组件对不起,我对这整件事有点陌生。我是否会使用ChangeListener来查看来宾是否更改?很抱歉提出这些问题,但谢谢:)您可以使用Changelistener或任何其他符合您目的的侦听器(PropertyChangeListener实际上就是为此而设计的,但对我来说太详细了一点,我从未使用过)。在编辑之后调用一个自创的方法(比如updateComponents)也是可能的,这取决于您有多少更改源。最后,您可能会更改一些ui组件,请确保通过调用SwingUtilities.invokeLater(…)在事件调度线程(EDT)上进行更改,否则会得到奇怪的结果。非常感谢!我想我现在明白该怎么办了:)