我试图通过数组(库存)搜索对象(ProductInfo)内的字符串(名称)或/和整数(ID)。之后,名称、ID、编号和描述将显示在4个单独的标签中(NameOut、IDOut、Num Out、DesOut)。我不知道该怎么做。如有任何帮助,不胜感激。
NameGo是按名称搜索的按钮,IDGo是按ID搜索的按钮。
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
import java.util.*;
/**
*
* @author matthewmurchison
*/
public class mVentory extends javax.swing.JFrame {
/**
* Creates new form mVentory
*/
public mVentory() {
initComponents();
}
public class ProductInfo{
String name;
String des;
int ID;
int num;
public ProductInfo(String name, String des, int ID, int num){
this.name = name;
this.des =des;
this.ID = ID;
this.num = num;
}
}
/**
*
*/
public static void Inventory(){
}
//creat Array
ArrayList <ProductInfo> Inventory = new ArrayList <ProductInfo> ();
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
jLabel3 = new javax.swing.JLabel();
jLabel4 = new javax.swing.JLabel();
jLabel5 = new javax.swing.JLabel();
jLabel6 = new javax.swing.JLabel();
jLabel7 = new javax.swing.JLabel();
NameIn = new javax.swing.JTextField();
IDIn = new javax.swing.JTextField();
DesIn = new javax.swing.JTextField();
NumIn = new javax.swing.JTextField();
NameSearch = new javax.swing.JTextField();
IDSearch = new javax.swing.JTextField();
NameOut = new javax.swing.JLabel();
IDOut = new javax.swing.JLabel();
DesOut = new javax.swing.JLabel();
NumOut = new javax.swing.JLabel();
jLabel14 = new javax.swing.JLabel();
jLabel15 = new javax.swing.JLabel();
jLabel16 = new javax.swing.JLabel();
AddGo = new javax.swing.JButton();
NameGo = new javax.swing.JButton();
IDGo = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jLabel1.setText("jLabel1");
jLabel2.setText("Name:");
jLabel3.setText("ID");
jLabel4.setText("Descripion");
jLabel5.setText("Number");
jLabel6.setText("Name");
jLabel7.setText("ID");
NameIn.setText("jTextField1");
IDIn.setText("jTextField2");
IDIn.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
IDInActionPerformed(evt);
}
});
DesIn.setText("jTextField3");
NumIn.setText("jTextField4");
NameSearch.setText("jTextField5");
IDSearch.setText("jTextField6");
NameOut.setText("jLabel10");
IDOut.setText("jLabel11");
DesOut.setText("jLabel12");
NumOut.setText("jLabel13");
jLabel14.setText("Add");
jLabel15.setText("Search by Name");
jLabel16.setText("Search by ID");
AddGo.setText("jButton1");
AddGo.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
AddGoActionPerformed(evt);
}
});
NameGo.setText("jButton2");
NameGo.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
NameGoActionPerformed(evt);
}
});
IDGo.setText("jButton3");
IDGo.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
IDGoActionPerformed(evt);
}
});
org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createSequentialGroup()
.add(0, 0, Short.MAX_VALUE)
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(AddGo)
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createSequentialGroup()
.add(jLabel14)
.add(233, 233, 233))
.add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createSequentialGroup()
.add(jLabel15)
.add(222, 222, 222))
.add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createSequentialGroup()
.add(jLabel16)
.add(230, 230, 230)))))
.add(layout.createSequentialGroup()
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING)
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(layout.createSequentialGroup()
.add(225, 225, 225)
.add(jLabel1))
.add(layout.createSequentialGroup()
.add(99, 99, 99)
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(jLabel7)
.add(jLabel6)))
.add(layout.createSequentialGroup()
.add(126, 126, 126)
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING)
.add(IDGo)
.add(layout.createSequentialGroup()
.add(NameOut)
.add(18, 18, 18)
.add(IDOut)
.add(18, 18, 18)
.add(DesOut)))
.add(18, 18, 18)
.add(NumOut)))
.add(layout.createSequentialGroup()
.addContainerGap()
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING)
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(jLabel2)
.add(layout.createSequentialGroup()
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(jLabel4)
.add(jLabel5)
.add(jLabel3))
.add(18, 18, 18)
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(NameSearch, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 207, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING, false)
.add(DesIn)
.add(NumIn)
.add(NameIn)
.add(IDIn, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 202, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)))))
.add(IDSearch, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 207, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))))
.add(layout.createSequentialGroup()
.add(220, 220, 220)
.add(NameGo)))
.addContainerGap(144, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(layout.createSequentialGroup()
.addContainerGap()
.add(jLabel1)
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, 31, Short.MAX_VALUE)
.add(jLabel14)
.add(18, 18, 18)
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
.add(jLabel2)
.add(NameIn, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
.add(jLabel3)
.add(IDIn, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
.add(jLabel4)
.add(DesIn, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING)
.add(NumIn, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
.add(jLabel5))
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(AddGo)
.add(18, 18, 18)
.add(jLabel15)
.add(24, 24, 24)
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
.add(NameSearch, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
.add(jLabel6))
.add(18, 18, 18)
.add(NameGo)
.add(14, 14, 14)
.add(jLabel16)
.add(18, 18, 18)
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
.add(IDSearch, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
.add(jLabel7))
.add(18, 18, 18)
.add(IDGo)
.add(32, 32, 32)
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
.add(NameOut)
.add(IDOut)
.add(DesOut)
.add(NumOut))
.add(64, 64, 64))
);
pack();
}// </editor-fold>
private void IDInActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
private void IDGoActionPerformed(java.awt.event.ActionEvent evt) {
// Search by ID
}
private void AddGoActionPerformed(java.awt.event.ActionEvent evt) {
// Add Item
String Name, Description;
int Identification, Number;
Name = NameIn.getText();
Description = DesIn.getText();
Identification = Integer.parseInt(IDIn.getText());
Number = Integer.parseInt(NumIn.getText());
Inventory.add(new ProductInfo(Name, Description, Identification, Number));
NameIn.setText("");
DesIn.setText("");
IDIn.setText("");
NumIn.setText("");
}
private void NameGoActionPerformed(java.awt.event.ActionEvent evt) {
// Search by Name
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
/* Set the Nimbus look and feel */
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
* For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(mVentory.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(mVentory.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(mVentory.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(mVentory.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
//</editor-fold>
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new mVentory().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JButton AddGo;
private javax.swing.JTextField DesIn;
private javax.swing.JLabel DesOut;
private javax.swing.JButton IDGo;
private javax.swing.JTextField IDIn;
private javax.swing.JLabel IDOut;
private javax.swing.JTextField IDSearch;
private javax.swing.JButton NameGo;
private javax.swing.JTextField NameIn;
private javax.swing.JLabel NameOut;
private javax.swing.JTextField NameSearch;
private javax.swing.JTextField NumIn;
private javax.swing.JLabel NumOut;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel14;
private javax.swing.JLabel jLabel15;
private javax.swing.JLabel jLabel16;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel6;
private javax.swing.JLabel jLabel7;
// End of variables declaration
}
假设ProductInfo
具有以下结构:
public class ProductInfo {
private int id;
private String name;
private Foo someOtherField;
public int getId () {
return id;
}
public String getName () {
return name;
}
//...
}
然后您可以使用以下代码搜索ArrayList<ProductInfo>
:
public class Inventory {
private ArrayList<ProductInfo> pis = new ArrayList<productInfo>();
public ProductInfo find (int id, String name) {
for(ProductInfo pi : pis) {
if(pi.getId() == id && Objects.Equals(pi.getName(),name)) {
return pi;
}
}
}
}
这个方法应该由Inventory
提供,因为Controller模式明确地声明你应该把用户界面和数据操作分开。
您可以使用以下命令从JTextField
实例获取数据:
String name = NameIn.getText();
int id = Integer.Parse(IDIn.getText());
最后,您将需要某种处理程序方法,它应该在用户触发事件时完成工作:
public class ButtonHandler implements ActionListener {
private Inventory inventory;
private JTextField idIn;
private JTextField nameIn;
public ButtonHandler(Inventory inventory, JTextField idIn, JTextField nameIn) {
this.inventory = inventory;
this.idIn = idIn;
this.nameIn = nameIn;
}
public void actionPerformed(ActionEvent e) {
String name = NameIn.getText();
int id = Integer.Parse(IDIn.getText());
ProductInfo pi = inventory.find(name,id);
//do something with pi
}
}
您需要创建这样的处理程序,并添加侦听器:
ButtonHandler handler = new ButtonHandler(inventory,this.IDIn,this.NameIn);
someButton.addActionListener(this);
最后一些Java编码指南:
- 字段名总是以小写字母开头。
- 如前所述,使用不同的类,单独的职责,并明确地将用户界面与数据操作分开。