我正在进行一个项目,我应该创建一个应用程序,该应用程序会获取信息并将其存储在JList中,当我在JList中选择一个人的姓名时,它应该会显示此人的联系信息
我制作了两个类,一个是contact类,另一个是JFrame类。
这是接触类
private String firstName;
private String lastName;
private String phNumber;
private String address;
public Contact(String firstName, String lastName, String phNumber, String address) {
this.firstName = firstName;
this.lastName = lastName;
this.phNumber = phNumber;
this.address = address;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getPhNumber() {
return phNumber;
}
public void setPhNumber(String phNumber) {
this.phNumber = phNumber;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return firstName + " " + lastName;
}
@Override
public int compareTo(Object o) {
if(((Contact) o).getFirstName().compareTo(this.firstName)>=1){
return 1;
}
if(((Contact) o).getFirstName().compareTo(this.firstName)<=-1){
return -1;
}
return 0;
}
}
然后这是我正在处理的添加按钮的代码。
JButton btnNewButton = new JButton("Save");
btnNewButton.addActionListener(new ActionListener() {
@SuppressWarnings({ "unchecked", "serial" })
public void actionPerformed(ActionEvent e) {
String f = txtFirst.getText();
String l = txtLast.getText();
String p = txtPhone.getText();
String a = txtAddress.getText();
list.add(new Contact(f, l, p, a));
Object[] array = list.toArray();
//listView is the name of the JList
listView.setListData((Contact[]) array);
}
});
btnNewButton.setBounds(244, 153, 89, 23);
frame.getContentPane().add(btnNewButton);
我只是需要帮助添加到JList中的联系人类,并且能够在JList上显示第一个和最后一个名字。谢谢你提前帮助我
只需将联系人对象添加到JList,然后创建自定义渲染器。
比如:
class ContactRenderer extends DefaultListCellRenderer
{
public Component getListCellRendererComponent(
JList list, Object value, int index,
boolean isSelected, boolean cellHasFocus)
{
super.getListCellRendererComponent(list, value,
index, isSelected, cellHasFocus);
Contact contact = (Contact)value;
setText(contact.getFirstName() + " " + contact.getLastName()
return this;
}
}
可以使用以下命令将渲染器指定给Jlist:
list.setCellRenderer( new ContactRenderer() );
有关更多信息和示例,请阅读Swing教程中关于创建自定义渲染器的部分。示例渲染器用于组合框,但概念是相同的。
问题内容: 我有填充我的JList的方法,有没有一种方法可以添加JList中的每个项目? 问题答案: 您可以重写JList的getToolTipText(..)方法。 我相信您也可以使用自定义渲染器来调用setToolTipText(…)方法。
当我用将file对象添加到用于创建JList的DefaultListModel中时,JList中显示的文本是文件的路径。但我只想显示文件名。但是,我不能执行,因为稍后我需要访问file对象,而不仅仅是一个字符串。
问题内容: 我有一个JList,我需要将其放置在滚动窗格中,因为我是从数据库中获取JList的,其值可能会大大增加。我需要能够向下滚动它们,所以我写道: 因为看不到任何ScrollPane,我在做什么错? 问题答案: 该列表已经包含在滚动窗格中,因此您不能将列表添加到主面板。仅滚动窗格。 您做错的另一件事是不使用布局管理器,而是设置组件的边界和大小。不要那样做 让布局管理器为您定位和调整组件的大小
我已经使用Netbeans GUI构建器创建了我的GUI。JList被添加到scrollpane中,如果我硬编码了JList的内容,所有内容都显示得很好。 但是如果我尝试通过动态添加项,则不会出现任何内容。 我只想显示JList中的主题以供视觉使用,其余的都是在后台完成的。
问题内容: 我有一个单击按钮时执行的功能。假设有一个循环将1到10加到。我将该数据添加到中。它完美地工作,并且数字相加。然后我在循环中添加了一个。但是输出是不同的。我想每秒增加1个元素。但是现在它等待10秒,并在第10秒结束时将所有1到10加在一起。我在哪里错了? 问题答案: 您应该在单独的线程中更新列表,否则最终将阻塞事件分发线程。 请尝试以下操作:
这让我很困惑。我在JList中添加对象,如下所示: 那么如何显示对象中的文本呢?非常感谢你。