java如何使用getter_在Java中使用getter / setter

我在从其他类访问变量的想法上遇到了一些麻烦.我在这里发了一篇文章:

Having access to a private variable from other classes in Java

我得到了一些有用的信息,并认为一个例子会更好地展示它,并提出一个单独的问题.我有一个可以输入数据的表单,它有一个List变量.我一开始并没有让它变为静态,但我想如果我需要从另一个类中获取总大小,那么我就不会创建该类的实例来使用该函数来获取getTotalContacts.我基本上想用我列表中的联系人总数更新我的状态栏.其中一位成员在上面的帖子中说使用原来的Foo成员来获取联系人,但我不确定在这种情况下它是如何工作的.任何想法将不胜感激.谢谢.

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import java.util.List;

import java.util.ArrayList;

public class AddressBook

{

public static void main(String[] args)

{

EventQueue.invokeLater(new Runnable()

{

public void run()

{

AddressBookFrame frame = new AddressBookFrame();

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

JMenuBar menuBar = new JMenuBar();

frame.setJMenuBar(menuBar);

JMenu fileMenu = new JMenu("File");

JMenuItem openItem = new JMenuItem("Open");

JMenuItem saveItem = new JMenuItem("Save");

JMenuItem saveAsItem = new JMenuItem("Save As");

JMenuItem printItem = new JMenuItem("Print");

JMenuItem exitItem = new JMenuItem("Exit");

fileMenu.add(openItem);

fileMenu.add(saveItem);

fileMenu.add(saveAsItem);

fileMenu.add(printItem);

fileMenu.add(exitItem);

menuBar.add(fileMenu);

JMenu editMenu = new JMenu("Edit");

JMenuItem newItem = new JMenuItem("New");

JMenuItem editItem = new JMenuItem("Edit");

JMenuItem deleteItem = new JMenuItem("Delete");

JMenuItem findItem = new JMenuItem("Find");

JMenuItem firstItem = new JMenuItem("First");

JMenuItem previousItem = new JMenuItem("Previous");

JMenuItem nextItem = new JMenuItem("Next");

JMenuItem lastItem = new JMenuItem("Last");

editMenu.add(newItem);

editMenu.add(editItem);

editMenu.add(deleteItem);

editMenu.add(findItem);

editMenu.add(firstItem);

editMenu.add(previousItem);

editMenu.add(nextItem);

editMenu.add(lastItem);

menuBar.add(editMenu);

JMenu helpMenu = new JMenu("Help");

JMenuItem documentationItem = new JMenuItem("Documentation");

JMenuItem aboutItem = new JMenuItem("About");

helpMenu.add(documentationItem);

helpMenu.add(aboutItem);

menuBar.add(helpMenu);

frame.setVisible(true);

}

});

}

}

class AddressBookFrame extends JFrame

{

public AddressBookFrame()

{

setLayout(new BorderLayout());

setTitle("Address Book");

setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);

AddressBookToolBar toolBar = new AddressBookToolBar();

add(toolBar, BorderLayout.NORTH);

AddressBookStatusBar aStatusBar = new AddressBookStatusBar();

add(aStatusBar, BorderLayout.SOUTH);

AddressBookForm form = new AddressBookForm();

add(form, BorderLayout.CENTER);

}

public static final int DEFAULT_WIDTH = 500;

public static final int DEFAULT_HEIGHT = 500;

}

/* Create toolbar buttons and add buttons to toolbar */

class AddressBookToolBar extends JPanel

{

public AddressBookToolBar()

{

setLayout(new FlowLayout(FlowLayout.LEFT));

JToolBar bar = new JToolBar();

JButton newButton = new JButton("New");

JButton editButton = new JButton("Edit");

JButton deleteButton = new JButton("Delete");

JButton findButton = new JButton("Find");

JButton firstButton = new JButton("First");

JButton previousButton = new JButton("Previous");

JButton nextButton = new JButton("Next");

JButton lastButton = new JButton("Last");

bar.add(newButton);

bar.add(editButton);

bar.add(deleteButton);

bar.add(findButton);

bar.add(firstButton);

bar.add(previousButton);

bar.add(nextButton);

bar.add(lastButton);

add(bar);

}

}

/* Creates the status bar string */

class AddressBookStatusBar extends JPanel

{

public AddressBookStatusBar()

{

setLayout(new FlowLayout(FlowLayout.LEFT));

this.statusBarString = new JLabel("Total: " + AddressBookForm.getTotalContacts());

add(this.statusBarString);

}

public void updateLabel()

{

contactsLabel.setText(AddressBookForm.getTotalContacts().toString());

}

private JLabel statusBarString;

private JLabel contactsLabel;

}

class AddressBookForm extends JPanel

{

public AddressBookForm()

{

// create form panel

this.setLayout(new GridLayout(2, 1));

JPanel formPanel = new JPanel();

formPanel.setLayout(new GridLayout(4, 2));

firstName = new JTextField(20);

lastName = new JTextField(20);

telephone = new JTextField(20);

email = new JTextField(20);

JLabel firstNameLabel = new JLabel("First Name: ", JLabel.LEFT);

formPanel.add(firstNameLabel);

formPanel.add(firstName);

JLabel lastNameLabel = new JLabel("Last Name: ", JLabel.LEFT);

formPanel.add(lastNameLabel);

formPanel.add(lastName);

JLabel telephoneLabel = new JLabel("Telephone: ", JLabel.LEFT);

formPanel.add(telephoneLabel);

formPanel.add(telephone);

JLabel emailLabel = new JLabel("Email: ", JLabel.LEFT);

formPanel.add(emailLabel);

formPanel.add(email);

add(formPanel);

// create button panel

JPanel buttonPanel = new JPanel();

JButton insertButton = new JButton("Insert");

JButton displayButton = new JButton("Display");

ActionListener insertAction = new AddressBookListener();

ActionListener displayAction = new AddressBookListener();

insertButton.addActionListener(insertAction);

displayButton.addActionListener(displayAction);

buttonPanel.add(insertButton);

buttonPanel.add(displayButton);

add(buttonPanel);

}

public static int getTotalContacts()

{

return addressList.size();

}

//void addContact(Person contact);

private JTextField firstName;

private JTextField lastName;

private JTextField telephone;

private JTextField email;

private JLabel contacts;

private static List addressList = new ArrayList();

private class AddressBookListener implements ActionListener

{

public void actionPerformed(ActionEvent e)

{

String buttonPressed = e.getActionCommand();

System.out.println(buttonPressed);

if (buttonPressed == "Insert") {

Person aPerson = new Person(firstName.getText(), lastName.getText(), telephone.getText(), email.getText());

addressList.add(aPerson);

}

else {

for (Person p : addressList) {

System.out.println(p);

}

}

}

}

}

我的另一个问题是为什么我得到错误,“int不能解除引用contactsLabel.setText(AddressbookForm.getTotalContacts().toString());

谢谢!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值