- 浏览: 135101 次
- 性别:
- 来自: 福建省莆田市
文章分类
最新评论
-
houruiming:
tks for your info which helps m ...
setcontent和setcontentobject用的是同一片内存 -
turingfellow:
in.tftpd -l -s /home/tmp -u ro ...
commands -
turingfellow:
LINUX下的网络设置 ifconfig ,routeLINU ...
commands -
turingfellow:
安装 linux loopbackyum install um ...
commands
<html><head><title>
jadex.examples.booktrading.common
</title></head><body>
This package contains classes used by buyer and seller agents of the
booktrading scenario.
</body></html>
package jadex.examples.booktrading.common;
import jadex.adapter.fipa.AgentDescription;
import jadex.adapter.fipa.SearchConstraints;
import jadex.runtime.IGoal;
import jadex.runtime.Plan;
/**
*/
public class FindServiceProvidersPlan extends Plan
{
/**
* The body method is called on the
* instatiated plan instance from the scheduler.
*/
public void body()
{
AgentDescription dfadesc = (AgentDescription)getParameter("description").getValue();
SearchConstraints constraints = new SearchConstraints();
constraints.setMaxResults(-1);
// Use a subgoal to search at the df.
IGoal ft = createGoal("df_search");
ft.getParameter("description").setValue(dfadesc);
ft.getParameter("constraints").setValue(constraints);
dispatchSubgoalAndWait(ft);
AgentDescription[] result = (AgentDescription[])ft.getParameterSet("result").getValues();
if(result.length > 0)
{
for(int i = 0; i < result.length; i++)
{
getParameterSet("result").addValue(result[i].getName());
}
}
else
{
fail();
}
}
}
package jadex.examples.booktrading.common;
import jadex.runtime.*;
import jadex.util.SGUI;
import javax.swing.*;
import javax.swing.border.*;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
import java.awt.*;
import java.awt.event.*;
import java.text.*;
import java.util.*;
import java.util.List;
/**
* The gui allows to add and delete buy or sell orders and shows open and
* finished orders.
*/
public class Gui extends JFrame
{
//-------- attributes --------
private String itemlabel;
private String goalname;
private String addorderlabel;
private IExternalAccess agent;
private List orders = new ArrayList();
private JTable table;
private DefaultTableModel detailsdm;
private AbstractTableModel items = new AbstractTableModel()
{
public int getRowCount()
{
return orders.size();
}
public int getColumnCount()
{
return 7;
}
public String getColumnName(int column)
{
switch(column)
{
case 0:
return "Title";
case 1:
return "Start Price";
case 2:
return "Limit";
case 3:
return "Deadline";
case 4:
return "Execution Price";
case 5:
return "Execution Date";
case 6:
return "State";
default:
return "";
}
}
public boolean isCellEditable(int row, int column)
{
return false;
}
public Object getValueAt(int row, int column)
{
Object value = null;
Order order = (Order)orders.get(row);
if(column == 0)
{
value = order.getTitle();
}
else if(column == 1)
{
value = new Integer(order.getStartPrice());
}
else if(column == 2)
{
value = new Integer(order.getLimit());
}
else if(column == 3)
{
value = order.getDeadline();
}
else if(column == 4)
{
value = order.getExecutionPrice();
}
else if(column == 5)
{
value = order.getExecutionDate();
}
else if(column == 6)
{
value = order.getState();
}
return value;
}
};
private DateFormat dformat = new SimpleDateFormat("yyyy/MM/dd HH:mm");
//-------- constructors --------
/**
* Create a gui.
* @param agent The external access.
* @param buy The boolean indicating if buyer or seller gui.
*/
public Gui(final IExternalAccess agent, final boolean buy)
{
super((buy ? "Buyer: " : "Seller: ") + agent.getAgentIdentifier().getName());
this.agent = agent;
if(buy)
{
itemlabel = " Books to buy ";
goalname = "purchase_book";
addorderlabel = "Add new purchase order";
}
else
{
itemlabel = " Books to sell ";
goalname = "sell_book";
addorderlabel = "Add new sell order";
}
JPanel itempanel = new JPanel(new BorderLayout());
itempanel.setBorder(new TitledBorder(new EtchedBorder(), itemlabel));
this.table = new JTable(items);
table.setDefaultRenderer(Object.class, new DefaultTableCellRenderer()
{
public Component getTableCellRendererComponent(JTable table,
Object value, boolean selected, boolean focus, int row,
int column)
{
Component comp = super.getTableCellRendererComponent(table,
value, selected, focus, row, column);
setOpaque(true);
if(column == 0)
{
setHorizontalAlignment(LEFT);
}
else
{
setHorizontalAlignment(RIGHT);
}
if(!selected)
{
Object state = items.getValueAt(row, 6);
if(Order.DONE.equals(state))
{
comp.setBackground(new Color(211, 255, 156));
}
else if(Order.FAILED.equals(state))
{
comp.setBackground(new Color(255, 211, 156));
}
else
{
comp.setBackground(table.getBackground());
}
}
if(value instanceof Date)
{
setValue(dformat.format(value));
}
return comp;
}
});
table.setPreferredScrollableViewportSize(new Dimension(600, 120));
JScrollPane scroll = new JScrollPane(table);
itempanel.add(BorderLayout.CENTER, scroll);
this.detailsdm = new DefaultTableModel(new String[]{"Negotiation Details"}, 0);
JTable details = new JTable(detailsdm);
details.setPreferredScrollableViewportSize(new Dimension(600, 120));
JPanel dep = new JPanel(new BorderLayout());
dep.add(BorderLayout.CENTER, new JScrollPane(details));
JPanel south = new JPanel();
// south.setBorder(new TitledBorder(new EtchedBorder(), " Control "));
JButton add = new JButton("Add");
final JButton remove = new JButton("Remove");
final JButton edit = new JButton("Edit");
add.setMinimumSize(remove.getMinimumSize());
add.setPreferredSize(remove.getPreferredSize());
edit.setMinimumSize(remove.getMinimumSize());
edit.setPreferredSize(remove.getPreferredSize());
south.add(add);
south.add(remove);
south.add(edit);
remove.setEnabled(false);
edit.setEnabled(false);
JSplitPane splitter = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
splitter.add(itempanel);
splitter.add(dep);
splitter.setOneTouchExpandable(true);
//splitter.setDividerLocation();
this.getContentPane().add(BorderLayout.CENTER, splitter);
this.getContentPane().add(BorderLayout.SOUTH, south);
agent.getBeliefbase().getBeliefSet("orders").addBeliefSetListener(new IBeliefSetListener()
{
public void beliefSetChanged(AgentEvent ae)
{
refresh();
}
public void factAdded(AgentEvent ae)
{
refresh();
}
public void factRemoved(AgentEvent ae)
{
refresh();
}
}, false);
agent.getBeliefbase().getBeliefSet("negotiation_reports")
.addBeliefSetListener(new IBeliefSetListener()
{
public void factAdded(AgentEvent ae)
{
//System.out.println("a fact was added");
refreshDetails();
}
public void factRemoved(AgentEvent ae)
{
//System.out.println("a fact was removed");
refreshDetails();
}
public void beliefSetChanged(AgentEvent ae)
{
//System.out.println("belset changed");
}
}, false);
agent.addAgentListener(new IAgentListener()
{
public void agentTerminating(AgentEvent ae)
{
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
Gui.this.setVisible(false);
}
});
}
}, false);
table.addMouseListener(new MouseAdapter()
{
public void mouseClicked(MouseEvent e)
{
refreshDetails();
}
} );
final InputDialog dia = new InputDialog(buy);
add.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
while(dia.requestInput())
{
try
{
String title = dia.title.getText();
int limit = Integer.parseInt(dia.limit.getText());
int start = Integer.parseInt(dia.start.getText());
Date deadline = dformat.parse(dia.deadline.getText());
Order order = new Order(title, deadline, start, limit, buy);
IGoal purchase = Gui.this.agent.createGoal(goalname);
purchase.getParameter("order").setValue(order);
Gui.this.agent.dispatchTopLevelGoal(purchase);
orders.add(order);
items.fireTableDataChanged();
break;
}
catch(NumberFormatException e1)
{
JOptionPane.showMessageDialog(Gui.this, "Price limit must be integer.", "Input error", JOptionPane.ERROR_MESSAGE);
}
catch(ParseException e1)
{
JOptionPane.showMessageDialog(Gui.this, "Wrong date format, use YYYY/MM/DD hh:mm.", "Input error", JOptionPane.ERROR_MESSAGE);
}
}
}
});
table.getSelectionModel().setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
table.getSelectionModel().addListSelectionListener(new ListSelectionListener()
{
public void valueChanged(ListSelectionEvent e)
{
boolean selected = table.getSelectedRow() >= 0;
remove.setEnabled(selected);
edit.setEnabled(selected);
}
});
remove.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
int row = table.getSelectedRow();
if(row >= 0 && row < orders.size())
{
Order order = (Order)orders.remove(row);
items.fireTableRowsDeleted(row, row);
IGoal[] goals = Gui.this.agent.getGoalbase().getGoals(goalname);
for(int i = 0; i < goals.length; i++)
{
if(order.equals(goals[i].getParameter("order").getValue()))
{
goals[i].drop();
break;
}
}
}
}
});
final InputDialog edit_dialog = new InputDialog(buy);
edit.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
int row = table.getSelectedRow();
if(row >= 0 && row < orders.size())
{
Order order = (Order)orders.get(row);
edit_dialog.title.setText(order.getTitle());
edit_dialog.limit.setText(Integer.toString(order.getLimit()));
edit_dialog.start.setText(Integer.toString(order.getStartPrice()));
edit_dialog.deadline.setText(dformat.format(order.getDeadline()));
while(edit_dialog.requestInput())
{
try
{
String title = edit_dialog.title.getText();
int limit = Integer.parseInt(edit_dialog.limit.getText());
int start = Integer.parseInt(edit_dialog.start.getText());
Date deadline = dformat.parse(edit_dialog.deadline.getText());
order.setTitle(title);
order.setLimit(limit);
order.setStartPrice(start);
order.setDeadline(deadline);
items.fireTableDataChanged();
IGoal[] goals = Gui.this.agent.getGoalbase().getGoals(goalname);
for(int i = 0; i < goals.length; i++)
{
if(order.equals(goals[i].getParameter("order").getValue()))
{
goals[i].drop();
break;
}
}
IGoal goal = Gui.this.agent.createGoal(goalname);
goal.getParameter("order").setValue(order);
Gui.this.agent.dispatchTopLevelGoal(goal);
break;
}
catch(NumberFormatException e1)
{
JOptionPane.showMessageDialog(Gui.this, "Price limit must be integer.", "Input error", JOptionPane.ERROR_MESSAGE);
}
catch(ParseException e1)
{
JOptionPane.showMessageDialog(Gui.this, "Wrong date format, use YYYY/MM/DD hh:mm.", "Input error", JOptionPane.ERROR_MESSAGE);
}
}
}
}
});
refresh();
pack();
setLocation(SGUI.calculateMiddlePosition(this));
setVisible(true);
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
agent.killAgent();
}
});
}
//-------- methods --------
/**
* Method to be called when goals may have changed.
*/
public void refresh()
{
// Use invoke later as refresh() is called from plan thread.
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
Order[] aorders = (Order[])agent.getBeliefbase().getBeliefSet("orders").getFacts();
for(int i = 0; i < aorders.length; i++)
{
if(!orders.contains(aorders[i]))
{
orders.add(aorders[i]);
}
}
items.fireTableDataChanged();
}
});
}
/**
* Refresh the details panel.
*/
public void refreshDetails()
{
int sel = table.getSelectedRow();
if(sel!=-1)
{
Order order = (Order)orders.get(sel);
IExpression exp = agent.getExpressionbase().getExpression("search_reports");
List res = (List)exp.execute("$order", order);
//for(int i=0; i<res.size(); i++)
// System.out.println(""+i+res.get(i));
while(detailsdm.getRowCount()>0)
detailsdm.removeRow(0);
for(int i=0; i<res.size(); i++)
detailsdm.addRow(new Object[]{res.get(i)});
//System.out.println(""+i+res.get(i));
}
}
//-------- inner classes --------
/**
* The input dialog.
*/
private class InputDialog extends JDialog
{
private JComboBox orders = new JComboBox();
private JTextField title = new JTextField(20);
private JTextField limit = new JTextField(20);
private JTextField start = new JTextField(20);
private JTextField deadline = new JTextField(dformat.format(new Date(System.currentTimeMillis() + 300000)));
private boolean aborted;
InputDialog(boolean buy)
{
super(Gui.this, addorderlabel, true);
if(buy)
{
orders.addItem(new Order("All about agents", new Date(), 100, 120, buy));
orders.addItem(new Order("All about web services", new Date(), 40, 60, buy));
orders.addItem(new Order("Harry Potter", new Date(), 5, 10, buy));
orders.addItem(new Order("Agents in the real world", new Date(), 30, 65, buy));
}
else
{
orders.addItem(new Order("All about agents", new Date(), 130, 110, buy));
orders.addItem(new Order("All about web services", new Date(), 50, 30, buy));
orders.addItem(new Order("Harry Potter", new Date(), 15, 9, buy));
orders.addItem(new Order("Agents in the real world", new Date(), 100, 60, buy));
}
JPanel center = new JPanel(new GridBagLayout());
center.setBorder(new EmptyBorder(5, 5, 5, 5));
getContentPane().add(BorderLayout.CENTER, center);
JLabel label;
Dimension labeldim = new JLabel("Preset orders ").getPreferredSize();
int row = 0;
GridBagConstraints leftcons = new GridBagConstraints(0, 0, 1, 1, 0, 0,
GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(1, 1, 1, 1), 0, 0);
GridBagConstraints rightcons = new GridBagConstraints(1, 0, GridBagConstraints.REMAINDER, 1, 1, 0,
GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(1, 1, 1, 1), 0, 0);
leftcons.gridy = rightcons.gridy = row++;
label = new JLabel("Preset orders");
label.setMinimumSize(labeldim);
label.setPreferredSize(labeldim);
center.add(label, leftcons);
center.add(orders, rightcons);
leftcons.gridy = rightcons.gridy = row++;
label = new JLabel("Title");
label.setMinimumSize(labeldim);
label.setPreferredSize(labeldim);
center.add(label, leftcons);
center.add(title, rightcons);
leftcons.gridy = rightcons.gridy = row++;
label = new JLabel("Start price");
label.setMinimumSize(labeldim);
label.setPreferredSize(labeldim);
center.add(label, leftcons);
center.add(start, rightcons);
leftcons.gridy = rightcons.gridy = row++;
label = new JLabel("Price limit");
label.setMinimumSize(labeldim);
label.setPreferredSize(labeldim);
center.add(label, leftcons);
center.add(limit, rightcons);
leftcons.gridy = rightcons.gridy = row++;
label = new JLabel("Deadline");
label.setMinimumSize(labeldim);
label.setPreferredSize(labeldim);
center.add(label, leftcons);
center.add(deadline, rightcons);
JPanel south = new JPanel();
// south.setBorder(new TitledBorder(new EtchedBorder(), " Control "));
this.getContentPane().add(BorderLayout.SOUTH, south);
JButton ok = new JButton("Ok");
JButton cancel = new JButton("Cancel");
ok.setMinimumSize(cancel.getMinimumSize());
ok.setPreferredSize(cancel.getPreferredSize());
south.add(ok);
south.add(cancel);
ok.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
aborted = false;
setVisible(false);
}
});
cancel.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
setVisible(false);
}
});
orders.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
Order order = (Order)orders.getSelectedItem();
title.setText(order.getTitle());
limit.setText("" + order.getLimit());
start.setText("" + order.getStartPrice());
}
});
}
public boolean requestInput()
{
this.deadline.setText(dformat.format(new Date(System.currentTimeMillis() + 300000)));
this.aborted = true;
this.pack();
this.setLocation(SGUI.calculateMiddlePosition(Gui.this, this));
this.setVisible(true);
return !aborted;
}
}
}
/**
* The dialog for showing details about negotiations.
* /
class NegotiationDetailsDialog extends JDialog
{
/**
* Create a new dialog.
* @param owner The owner.
* /
public NegotiationDetailsDialog(Frame owner, List details)
{
super(owner);
DefaultTableModel tadata = new DefaultTableModel(new String[]{"Negotiation Details"}, 0);
JTable table = new JTable(tadata);
for(int i=0; i<details.size(); i++)
tadata.addRow(new Object[]{details.get(i)});
JButton ok = new JButton("ok");
ok.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
NegotiationDetailsDialog.this.setVisible(false);
NegotiationDetailsDialog.this.dispose();
}
});
JPanel south = new JPanel(new FlowLayout(FlowLayout.CENTER));
south.add(ok);
this.getContentPane().add("Center", table);
this.getContentPane().add("South", south);
this.setSize(400,200);
this.setLocation(SGUI.calculateMiddlePosition(this));
this.setVisible(true);
}
}*/package jadex.examples.booktrading.common;
import java.text.SimpleDateFormat;
import java.util.Date;
import jadex.runtime.IGoal;
/**
* A negotiation report contains user-relevant data about negotiations,
* i.e. the order and details about the negotiation and the time.
*/
public class NegotiationReport
{
//-------- attributes --------
/** The order. */
protected Order order;
/** The report. */
protected String details;
/** The negotiation time. */
protected long time;
//-------- constructors --------
/**
* Create a new report.
*/
public NegotiationReport(Order order, String details, long time)
{
this.order = order;
this.details = details;
this.time = time;
}
//-------- methods --------
/**
* Get the order.
* @return The order.
*/
public Order getOrder()
{
return order;
}
/**
* Set the order.
* @param order The order to set.
*/
public void setOrder(Order order)
{
this.order = order;
}
/**
* Get the details.
* @return The details.
*/
public String getDetails()
{
return details;
}
/**
* Set the details.
* @param details The details to set.
*/
public void setDetails(String details)
{
this.details = details;
}
/**
* Get the negotiation time.
* @return The time.
*/
public long getTime()
{
return time;
}
/**
* Set the negotiation time.
* @param time The time to set.
*/
public void setTime(long time)
{
this.time = time;
}
/**
* Get the string representation.
* @return The string representation.
*/
public String toString()
{
//return "NegotiationReport("+order+", "+details+")";
SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy.'-'HH:mm:ss ': '");
return sdf.format(new Date(time))+order+" - "+details;
}
}
package jadex.examples.booktrading.common;
import jadex.util.SimplePropertyChangeSupport;
import java.beans.PropertyChangeListener;
import java.util.Date;
/**
* The order for purchasing or selling books.
*/
public class Order
{
//-------- constants --------
/** The state open. */
public static final String OPEN = "open";
/** The state done. */
public static final String DONE = "done";
/** The state failed. */
public static final String FAILED = "failed";
//-------- attributes --------
/** The book title. */
protected String title;
/** The deadline. */
protected Date deadline;
/** The limit price. */
protected int limit;
/** The startprice. */
protected int startprice;
/** The starttime. */
protected long starttime;
/** The execution price. */
protected Integer exeprice;
/** The execution date. */
protected Date exedate;
/** The flag indicating if it is a buy (or sell) order. */
protected boolean buyorder;
/** The helper object for bean events. */
public SimplePropertyChangeSupport pcs;
//-------- constructors --------
/**
* Create a new order.
*
* @param title The title.
* @param deadline The deadline.
* @param limit The limit.
* @param start The start price
*/
public Order(String title, Date deadline, int start, int limit, boolean buyorder)
{
this.title = title;
this.deadline = deadline;
this.startprice = start;
this.limit = limit;
this.buyorder = buyorder;
this.starttime = System.currentTimeMillis();
this.pcs = new SimplePropertyChangeSupport(this);
}
//-------- methods --------
/**
* Get the title.
*
* @return The title.
*/
public String getTitle()
{
return title;
}
/**
* Set the title.
*
* @param title The title.
*/
public void setTitle(String title)
{
String oldtitle = this.title;
this.title = title;
pcs.firePropertyChange("title", oldtitle, title);
}
/**
* Get the deadline.
*
* @return The deadline.
*/
public Date getDeadline()
{
return deadline;
}
/**
* Set the deadline.
*
* @param deadline The deadline.
*/
public void setDeadline(Date deadline)
{
Date olddeadline = this.deadline;
this.deadline = deadline;
pcs.firePropertyChange("deadline", olddeadline, deadline);
}
/**
* Get the limit.
*
* @return The limit.
*/
public int getLimit()
{
return limit;
}
/**
* Set the limit.
*
* @param limit The limit.
*/
public void setLimit(int limit)
{
int oldlimit = this.limit;
this.limit = limit;
pcs.firePropertyChange("limit", oldlimit, limit);
}
/**
* Getter for startprice
*
* @return Returns startprice.
*/
public int getStartPrice()
{
return startprice;
}
/**
* Setter for startprice.
*
* @param startprice The Order.java value to set
*/
public void setStartPrice(int startprice)
{
int oldstartprice = this.startprice;
this.startprice = startprice;
pcs.firePropertyChange("startPrice", oldstartprice, startprice);
}
/**
* Get the start time.
*
* @return The start time.
*/
public long getStartTime()
{
return starttime;
}
/**
* Set the start time.
*
* @param starttime The start time.
*/
public void setStartTime(long starttime)
{
long oldstarttime = this.starttime;
this.starttime = starttime;
pcs.firePropertyChange("startTime", new Long(oldstarttime), new Long(starttime));
}
/**
* Get the execution price.
*
* @return The execution price.
*/
public Integer getExecutionPrice()
{
return exeprice;
}
/**
* Set the execution price.
*
* @param exeprice The execution price.
*/
public void setExecutionPrice(Integer exeprice)
{
Integer oldexeprice = this.exeprice;
this.exeprice = exeprice;
pcs.firePropertyChange("executionPrice", oldexeprice, exeprice);
}
/**
* Get the execution date.
*
* @return The execution date.
*/
public Date getExecutionDate()
{
return exedate;
}
/**
* Set the execution date.
*
* @param exedate The execution date.
*/
public void setExecutionDate(Date exedate)
{
Date oldexedate = this.exedate;
this.exedate = exedate;
pcs.firePropertyChange("executionDate", oldexedate, exedate);
}
/**
* Test if it is a buyorder.
*
* @return True, if buy order.
*/
public boolean isBuyOrder()
{
return buyorder;
}
/**
* Set the order type.
*
* @param buyorder True for buyorder.
*/
public void setBuyOrder(boolean buyorder)
{
boolean oldbuyorder = this.buyorder;
this.buyorder = buyorder;
pcs.firePropertyChange("buyOrder", oldbuyorder ? Boolean.TRUE : Boolean.FALSE, buyorder ? Boolean.TRUE : Boolean.FALSE);
}
/**
* Get the order state.
*
* @return The order state.
*/
public String getState()
{
String state = FAILED;
if(exedate != null)
{
state = DONE;
}
else if(System.currentTimeMillis() < deadline.getTime())
{
state = OPEN;
}
return state;
}
/**
* Get a string representation of the order.
*/
public String toString()
{
StringBuffer sbuf = new StringBuffer();
sbuf.append(isBuyOrder() ? "Buy '" : "Sell '");
sbuf.append(getTitle());
sbuf.append("'");
return sbuf.toString();
}
//-------- property methods --------
/**
* Add a PropertyChangeListener to the listener list.
* The listener is registered for all properties.
*
* @param listener The PropertyChangeListener to be added.
*/
public void addPropertyChangeListener(PropertyChangeListener listener)
{
pcs.addPropertyChangeListener(listener);
}
/**
* Remove a PropertyChangeListener from the listener list.
* This removes a PropertyChangeListener that was registered
* for all properties.
*
* @param listener The PropertyChangeListener to be removed.
*/
public void removePropertyChangeListener(PropertyChangeListener listener)
{
pcs.removePropertyChangeListener(listener);
}
}
发表评论
-
protocols
2011-04-03 19:22 924<!-- The protocols capabilit ... -
dfcap
2011-04-03 19:15 875<!-- The df capability has a ... -
booktrading /seller
2011-03-29 23:19 927<html><head><tit ... -
booktrading / manager
2011-03-29 23:18 1086<html><head><tit ... -
booktrading / buyer
2011-03-29 23:13 844<!-- <H3>The buyer age ... -
tomcat的context说明书
2011-03-20 17:39 803http://tomcat.apache.org/tomcat ... -
msyql的select语法
2010-09-13 22:52 107513.2.7. SELECT语法 13.2.7.1. ... -
zotero与word集成
2010-09-11 08:50 1765Manually Installing the Zotero ... -
university 2/n
2010-08-24 07:54 896Chapter 1.Introduction of regis ... -
university 1/n
2010-08-24 07:53 939chapter? Introduction ?.?The st ... -
Sun Java Bugs that affect lucene
2010-08-23 08:59 735Sometimes Lucene runs amok of b ... -
Snowball分词
2010-08-22 13:07 1222using System; using Lucene.Net. ... -
penn tree bank 6/6
2010-08-20 07:09 91811 This use of 12 Contact the - ... -
penn tree bank 5/n
2010-08-19 07:40 921always errs on the side of caut ... -
penn tree bank 4/n
2010-08-19 07:39 8174. Bracketing 4.1 Basic Methodo ... -
penn tree bank 3/n
2010-08-15 23:31 8182.3.1 Automated Stage. During t ... -
penn tree bank 2/n
2010-08-15 23:30 1504Mitchell P Marcus et al. Buildi ... -
capabilities 3/3
2010-08-11 22:58 77401<capability xmlns="ht ... -
capabilities 2/3
2010-08-11 22:57 737Fig.3.Element creation cases:a) ... -
capabilities 1/3
2010-08-11 22:56 947Extending the Capability Concep ...
相关推荐
product/common/js product/common/js
android 系统应用二次开发的导入包,生成位置 /out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/classes.jar 自己命名成了 framework_intermediates_class.jar 源文件叫 class.jar
(百度地图)位置数据可视化用到的js文件...https://mapv.baidu.com/gl/examples/static/common.js https://mapv.baidu.com/build/mapv.min.js https://code.bdstatic.com/npm/mapvgl@1.0.0-beta.55/dist/mapvgl.min.js
common/common.js
#include <google/protobuf/stubs/common.h> namespace google { namespace protobuf { // Defined in this file. class Service; class RpcController; class RpcChannel; // Defined in other files. class ...
qq2012/Bin/Common.dll解决wine qq自动离开的问题 在linux中安装好wine1.4(或1.5)之后,去qq下载qq2012,安装上之后把这个Common.dll下载下来,替换掉qq/Bin/Common.dll就可以了。 我这里也是把75改成eb,其它地方没有...
@/common/geojson/360000/吉安市.json
thinkphp扩展common文件,文件包含很多的think类集合,和接口
apollo/modules/planning/common/path/DiscretizedPath类单元测试的cmake实现 apollo原本是通过bazel的方式进行编译,同时测试脚本与其他模块耦合度高,这里将DiscretizedPath类相关代码全部截出单独测试 ...
主要介绍了ThinkPHP调用common/common.php函数提示错误function undefined的解决方法,是进行ThinkPHP程序设计的升级过程中经常会遇到的问题,需要的朋友可以参考下
在PHPMyAdmin的安装过程中,有时会遇到一个常见的错误提示:“Warning: require_once(./libraries/common.inc.php) [function.require-once]: failed to open stream: No such file or directory”。这个错误意味着...
ObjectTemplate.soundFilename "objects/weapons/handheld/common/monosounds/bf3_trigger_click.wav" ObjectTemplate.soundFilename "objects/weapons/handheld/common/monosounds/rifle_firerate.wav" Object...
"Google Common Jar包1.0" 是一个广泛应用于Java开发中的工具库,主要由Google公司开发并维护。这个包集合了一系列实用的工具类和方法,极大地丰富了Java标准库的功能,提高了开发效率。其中,`...
在Java编程领域,`com.google.common.collect`是一个非常重要的包,它是Google的Guava库的一部分。Guava是一个广泛使用的开源库,提供了许多实用的集合框架、缓存、原生类型支持、并发工具、字符串处理等功能。`...
尝试将 DirectX 引入 Common LispLDX 是一种将 DirectX 引入 Common Lisp 的尝试。以下是依赖项的列表 * 门http://github.com/Lovesan/doors 这取决于 ** 亚历山大...
out/target/common/obj/JAVA_LIBRARIES/core_intermediates/classes.jar; out/target/common/obj/JAVA_LIBRARIES/android_stubs_current_intermediates/classes.jar; out/target/common/obj/JAVA_LIBRARIES/...
本文实例分析了ThinkPHP/Common/common.php文件常用函数功能。分享给大家供大家参考,具体如下: /** * 获取和设置配置参数 支持批量定义 * @param string|array $name 配置变量 * @param mixed $value 配置值 ...
在这款名为"common-2.12.4.aar"的压缩包文件中,包含了一个针对这一需求的库,主要是为了帮助开发者解决在GitHub上下载"Serenegiant"的"common"模块时遇到的问题。下面我们将详细探讨如何在Android应用中集成和使用...
当出现"PRIO-064 (I/O COMMON is changed)"报警时,这表示机器人系统检测到I/O(输入/输出)公共端口的状态发生了变化,可能影响到系统的正常运行和生产效率。本文将深入探讨这一报警的原因以及相应的处理对策。 ...