我正在尝试在运行时通过单击应用程序中的按钮(搜索按钮)添加 JTable。该表已成功显示在其他程序中,但是当我尝试在此处按钮的 actionExecute 方法中添加代码时,未显示 JTable。
GUI 是使用 netbeans GUI 创建的,但我将其移至 eclipse 并添加了数据库代码。
JTable 显示数据库中的数据。单击按钮即可检索数据。并且 JTable 应该只在按钮单击时显示,其中包含该数据位于按钮正下方的同一帧上
唯一的问题是 JTable 未显示。我尝试使用JScrollPane和JPanel,但没有成功。也尝试了其他方法。
'
package lib_ss;
import java.awt.BorderLayout;
import java.awt.Font;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.SwingConstants;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;
public class NewJFrame2 extends javax.swing.JFrame {
public int id=0;
public void getId(int i)
{
id=i;
}
JScrollPane pane;
TableColumn column;
ResultSet rs=null;
String col[]={"ID","NAME","AUTHOR","DEPT","Location","Publisher","Edition"};
ArrayList<String[]> values = new ArrayList<>();
DefaultTableModel model;
JTable table;
int k=0;
private Connection con;
public void connect()
{
try {
Class.forName("oracle.jdbc.OracleDriver");
con=DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:xe","system","manhattan");
} catch (Exception e)
{
e.printStackTrace();
}
}
/**
* Creates new form NewJFrame2
*/
public NewJFrame2() {
initComponents();
}
NewJFrame2(NewJFrame1 aThis) {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
/**
* 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">//GEN-BEGIN:initComponents
public void initComponents() {
buttonGroup1 = new javax.swing.ButtonGroup();
buttonGroup2 = new javax.swing.ButtonGroup();
jButton1 = new javax.swing.JButton();
jButton2 = new javax.swing.JButton();
jButton3 = new javax.swing.JButton();
jLabel1 = new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
getContentPane().setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());
jButton1.setFont(new java.awt.Font("Tahoma", 1, 10)); // NOI18N
jButton1.setText("Log Out");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
getContentPane().add(jButton1, new org.netbeans.lib.awtextra.AbsoluteConstraints(1060, 50, -1, -1));
jButton2.setFont(new java.awt.Font("Tahoma", 1, 18)); // NOI18N
jButton2.setIcon(new javax.swing.ImageIcon(getClass().getResource("/lib_ss/mic1.png"))); // NOI18N
jButton2.setText("Search");
jButton2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton2ActionPerformed(evt);
}
});
getContentPane().add(jButton2, new org.netbeans.lib.awtextra.AbsoluteConstraints(619, 124, -1, -1));
jButton3.setFont(new java.awt.Font("Tahoma", 1, 18)); // NOI18N
jButton3.setText("Previous Records");
jButton3.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton3ActionPerformed(evt);
}
});
getContentPane().add(jButton3, new org.netbeans.lib.awtextra.AbsoluteConstraints(320, 124, 203, 56));
jLabel1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/lib_ss/url1.jpg"))); // NOI18N
jLabel1.setText("jLabel1");
getContentPane().add(jLabel1, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 0, 1230, 740));
pack();
}// </editor-fold>//GEN-END:initComponents
public void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
// TODO add your handling code here:
NewJFrame1 frame = new NewJFrame1();
frame.setVisible(true);
this.dispose();
}//GEN-LAST:event_jButton1ActionPerformed
public void jButton3ActionPerformed(java.awt.event.ActionEvent evt)
{
try {
Class.forName("oracle.jdbc.OracleDriver");
con=DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:xe","system","manhattan");
PreparedStatement ps=con.prepareStatement("select * from records where stid=?");
ps.setInt(6,id);
//ps.setString(2,"bruce");
rs=ps.executeQuery();
if (rs.next())
{ }
}
catch(Exception e)
{
e.printStackTrace();
}
}
//Search Button
public void jButton2ActionPerformed(java.awt.event.ActionEvent evt)
{
int i=0;
try {
Class.forName("oracle.jdbc.OracleDriver");
con=DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:xe","system","manhattan");
PreparedStatement ps=con.prepareStatement("select * from books where name=? or author=?");
ps.setString(1,"java");
ps.setString(2,"bruce");
rs=ps.executeQuery();
/* for (int l = 0; l < 7; l++) {
column = table.getColumnModel().getColumn(l);
if (l==0) {
column.setPreferredWidth(25);
}
if (l == 1||l==2) {
column.setPreferredWidth(90);
}
if (l == 3||l==5) {
column.setPreferredWidth(145);
}
if(l==4||l==6) {
column.setPreferredWidth(87);
}
}
*/
/*model = new DefaultTableModel(col,7);
DefaultTableCellRenderer rightRenderer = new DefaultTableCellRenderer();
rightRenderer.setHorizontalAlignment(SwingConstants.RIGHT);
while (rs.next())
{
String arr[] ={Integer.toString(rs.getInt("ID")),
rs.getString("NAME"),rs.getString("AUTHOR"),
rs.getString("DEPT"),rs.getString("LOC"),
rs.getString("PUBLISHER"),rs.getString("EDITION")};
table.setFont(new Font("Serif", Font.PLAIN, 20));
for(int j=0;j<7;j++)
{
if(k<arr.length&&i<10)
{table.setValueAt(arr[k],i,j);
table.getColumnModel().getColumn(j).setCellRenderer(rightRenderer);
k++;
}
}
i++; }
*/
while (rs.next()) {
String arr[] ={
Integer.toString(rs.getInt("ID")),
rs.getString("NAME"),rs.getString("AUTHOR"),
rs.getString("DEPT"),rs.getString("LOC"),
rs.getString("PUBLISHER"),rs.getString("EDITION")
};
values.add(arr);
}
String[][] data = values.toArray(new String[values.size()][]);
model = new DefaultTableModel(data,col);
table.setModel(model);
/* if(rs.next())
{
String msg = "BOOK FOUND";
JLabel label = new JLabel(msg);
label.setFont(new Font("serif", Font.PLAIN, 18));
JOptionPane.showMessageDialog(null, label);
}
else
{String msg = "BOOK NOT FOUND";
JLabel label = new JLabel(msg);
label.setFont(new Font("serif", Font.PLAIN, 18));
JOptionPane.showMessageDialog(null, label);}
*/
System.out.println("hello");
//table.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS)
/*
JScrollPane scroll=new JScrollPane(table);
//JPanel panel=new JPanel();
//panel.add(scroll);
//getContentPane().add(scroll,BorderLayout.CENTER);
*/
JScrollPane scroll=new JScrollPane(table);
JPanel panel=new JPanel();
panel.add(scroll);
getContentPane().add(panel);
revalidate();
repaint();
//JScrollPane scroll=new JScrollPane(table);
/*
JPanel p=new JPanel();
p.add(table);
add(p);
*/
//table.setBounds(200,200,100,100);
//table.setLocation(200,200);
//setVisible(true);
//setSize(900,900);
//getContentPane().add(pane);
//setLayout(new FlowLayout());
//setDefaultCloseOperation(EXIT_ON_CLOSE);
}
catch (Exception e)
{
e.printStackTrace();
}
}//GEN-LAST:event_jButton2ActionPerformed
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(NewJFrame2.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(NewJFrame2.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(NewJFrame2.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(NewJFrame2.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
//</editor-fold>
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
new NewJFrame2().setVisible(true);
}
});
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.ButtonGroup buttonGroup1;
private javax.swing.ButtonGroup buttonGroup2;
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton2;
private javax.swing.JButton jButton3;
private javax.swing.JLabel jLabel1;
// End of variables declaration//GEN-END:variables
}
这是错误:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at javax.swing.ImageIcon.<init>(ImageIcon.java:217)
at lib_ss.NewJFrame2.initComponents(NewJFrame2.java:128)
at lib_ss.NewJFrame2.<init>(NewJFrame2.java:64)
at lib_ss.NewJFrame2$4.run(NewJFrame2.java:364)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:749)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:702)
at java.awt.EventQueue$3.run(EventQueue.java:696)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:719)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
我在我的一个应用程序中也做了同样的事情。
我所做的是,我在主面板上添加一个JPanel
,然后使用 Netbeans GUI 在该面板上添加一个JTable
。
最初,使用JPanel.setVisible(false);
.. 隐藏包含表格的JPanel
,以便在按下按钮之前不会显示。
在按钮的actionPerformed
中,像这样编写代码: 假设您的JPanel
是否有名称"面板",JTable
的名称为"选项卡">
panel.setVisible(true);
DefaultTableModel model= (DefaultTableModel) tab.getModel();
//your code to get data from database
while (rs.next()){
Object rowData= new Object[7]; //as your table has 7 fields/columns
rowData[0]=rs.getInt("ID");
rowData[1]=rs.getString("NAME");
rowData[2]=rs.getString("AUTHOR");
rowData[3]=rs.getString("DEPT");
rowData[4]=rs.getString("LOC");
rowData[5]=rs.getString("PUBLISHER");
rowData[6]=rs.getString("EDITION");
}
model.addRow(rowData);
根据您的需要修改此代码...它有效。
我的建议是在:
//getContentPane().add(scroll,BorderLayout.CENTER);
添加以下行:
revalidate();
repaint();
同时替换行
/*
JScrollPane scroll=new JScrollPane(table);
//JPanel panel=new JPanel();
//panel.add(scroll);
//getContentPane().add(scroll,BorderLayout.CENTER);
*/
跟
JScrollPane scroll=new JScrollPane(table);
JPanel panel=new JPanel();
panel.add(scroll);
getContentPane().add(panel);
新异常后编辑
您的主要问题在于这一行javax.swing.JTable.setValueAt(JTable.java:2742)
方法jButton2ActionPerformed
.研究您的代码,我发现要初始化DefaultTableModel
,您使用了以下行:
model = new DefaultTableModel(col,10);
在这里,我找不到变量col
在您上传的代码中初始化的位置。我觉得col
可能已被初始化为0
.因此,如果col
值0
则DefaultTableModel
将具有 0 列,因此当您尝试向其添加数据时ArrayIndexOutOfBoundsException
会发生此异常。此外,您还指定表的行数为10
。现在,如果ResultSet
返回超过 10 行,将再次发生ArrayIndexOutOfBoundsException
。
我的建议是,在从ResultSet
对象收集所有数据后初始化DefaultTableModel
,如下图所示:
首先,在
while
循环从实例中检索数据之前声明并初始化ArrayList
String[]
类型的values
rs
如下所示:ArrayList<String[]> values = new ArrayList<>();
在
while
循环中,从rs
对象检索数据,而不是将数据添加到table
变量setValueAt
将数据添加到ArrayList
对象values
如下所示:while (rs.next()) { String arr[] ={ Integer.toString(rs.getInt("ID")), rs.getString("NAME"),rs.getString("AUTHOR"), rs.getString("DEPT"),rs.getString("LOC"), rs.getString("PUBLISHER"),rs.getString("EDITION") }; values.add(arr); }
创建一个新的
String[]
变量 比如columnNames
来存储列的名称。这些名称将在表的标题中显示为列的名称,如下所示:String[] columnNames = { "ID","NAME","AUTHOR", "DEPT","LOC", "PUBLISHER","EDITION" };
现在使用构造函数
DefaultTableModel(Object[][] data,Object[] columnNames)
初始化DefaultTableModel
变量model
。当我们调用values.toArray()
时,我们会得到data
,这基本上是String[][]
型 .如下所示:String[][] data = values.toArray(new String[values.size()][]); model = new DefaultTableModel(data,columnNames);
最后,将
model
变量设置为JTable
的Model
,如图所示。table.setModel(model);
上面的建议不仅照顾了由于您的初始代码而导致的ArrayIndexOutOfBoundsException
,而且还照顾了这样一个事实,即如果rs
对象返回的行数超过 10。我希望这将解决您当前的问题。
您的完整代码
package lib_ss;
import java.awt.BorderLayout;
import java.awt.Font;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.awt.Dimension;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.SwingConstants;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;
import javax.swing.JButton;
import javax.swing.JLabel;
public class NewJFrame2 extends javax.swing.JFrame {
String[] col={"ID","NAME","AUTHOR","DEPT","Location","Publisher","Edition"};
private Connection con;
public int id=0;
public void getId(int i){
id=i;
}
public void connect(){
try {
Class.forName("oracle.jdbc.OracleDriver");
con=DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:xe","system","manhattan");
} catch (Exception e){
e.printStackTrace();
}
}
/**
* Creates new form NewJFrame2
*/
public NewJFrame2() {
initComponents();
}
NewJFrame2(NewJFrame1 aThis) {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
/**
* 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">//GEN-BEGIN:initComponents
public void initComponents() {
JButton jButton1 = new JButton();
JButton jButton2 = new JButton();
JButton jButton3 = new JButton();
JLabel jLabel1 = new JLabel();
getContentPane().setLayout(new java.awt.FlowLayout());
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jButton1.setFont(new java.awt.Font("Tahoma", 1, 10)); // NOI18N
jButton1.setText("Log Out");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
getContentPane().add(jButton1);
jButton2.setFont(new java.awt.Font("Tahoma", 1, 18)); // NOI18N
jButton2.setIcon(new javax.swing.ImageIcon(getClass().getResource("/lib_ss/mic1.png"))); // NOI18N
jButton2.setText("Search");
jButton2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton2ActionPerformed(evt);
}
});
jButton2.setVisible(true);
getContentPane().add(jButton2);
jButton3.setFont(new java.awt.Font("Tahoma", 1, 18)); // NOI18N
jButton3.setText("Previous Records");
jButton3.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton3ActionPerformed(evt);
}
});
getContentPane().add(jButton3);
jLabel1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/lib_ss/url1.jpg"))); // NOI18N
jLabel1.setText("jLabel1");
getContentPane().add(jLabel1);
pack();
}// </editor-fold>//GEN-END:initComponents
public void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
// TODO add your handling code here:
NewJFrame1 frame = new NewJFrame1();
frame.setVisible(true);
this.dispose();
}//GEN-LAST:event_jButton1ActionPerformed
public void jButton3ActionPerformed(java.awt.event.ActionEvent evt){
try {
Class.forName("oracle.jdbc.OracleDriver");
con=DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:xe","system","manhattan");
PreparedStatement ps=con.prepareStatement("select * from records where stid=?");
ps.setInt(6,id);
ResultSet rs=ps.executeQuery();
if (rs.next()){
//TODO add functionality.
}
}catch(Exception e){
e.printStackTrace();
}
}
//Search Button
public void jButton2ActionPerformed(java.awt.event.ActionEvent evt){
int i=0;
try {
Class.forName("oracle.jdbc.OracleDriver");
con=DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:xe","system","manhattan");
PreparedStatement ps=con.prepareStatement("select * from books where name=? or author=?");
ps.setString(1,"java");
ps.setString(2,"bruce");
ResultSet rs=ps.executeQuery();
ArrayList<String[]> values = new ArrayList<>();
if (rs.next()) {
String arr[] ={
Integer.toString(rs.getInt("ID")),
rs.getString("NAME"),rs.getString("AUTHOR"),
rs.getString("DEPT"),rs.getString("LOC"),
rs.getString("PUBLISHER"),rs.getString("EDITION")
};
values.add(arr);
}
String[][] data = values.toArray(new String[values.size()][]);
DefaultTableModel model = new DefaultTableModel(data,col);
JTable table = new JTable(model);
//System.out.println("hello");
JScrollPane scroll=new JScrollPane(table);
JPanel panel=new JPanel();
panel.add(scroll);
getContentPane().add(panel);
pack();
}catch (Exception e){
e.printStackTrace();
}
}//GEN-LAST:event_jButton2ActionPerformed
public static void main(String[] args){
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(NewJFrame2.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(NewJFrame2.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(NewJFrame2.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(NewJFrame2.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
//</editor-fold>
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
new NewJFrame2().setVisible(true);
}
});
}
// Variables declaration - do not modify//GEN-BEGIN:variables
// End of variables declaration//GEN-END:variables
}
我已经对其进行了测试,并且在没有数据库连接和图像的情况下工作正常。
填充数组列表
public ArrayList<classExpens> expensList()
{
ArrayList<classExpens> expensList = new ArrayList<classExpens> ();
conn=mySqlConnection.ConnectDB();
String sql="select * from tbl_name";
try{
Statement st = conn.createStatement();
rs=st.executeQuery(sql);
classExpens expens;
while(rs.next()){
expens = new classExpens(rs.getInt("id"),rs.getString("name"),rs.getString("item"),rs.getFloat("price"),rs.getString("date"));
expensList.add(expens);
}
}
catch(Exception ex){
ex.printStackTrace();
}
return expensList;
}
从数组列表分隔表
public void showTable(){
ArrayList<classExpens> list = expensList();
DefaultTableModel model = (DefaultTableModel)tblExpens.getModel();
while(tblExpens.getRowCount()>0)
{
((DefaultTableModel)tblExpens.getModel()).removeRow(0);
}
Object[]row = new Object[5];
for (int i = 0; i <list.size(); i++) {
row[0]=list.get(i).getid();
row[1]=list.get(i).getname();
row[2]=list.get(i).getitem();
row[3]=list.get(i).getprice();
row[4]=list.get(i).getdate();
model.addRow(row);
}
}
在 JForm jtextFields 或 jlabel 中显示数据
public void showItems(int index){
lblid.setText(Integer.toString(expensList().get(index).getid()));
txtName.setText(expensList().get(index).getname());
txtItem.setText(expensList().get(index).getitem());
txtprice.setText(Float.toString(expensList().get(index).getprice()));
try{
java.util.Date addDate= null;
addDate = new SimpleDateFormat("yyyy-MM-dd").parse((String)expensList().get(index).getdate());
this.Date.setDate(addDate);
}
catch(ParseException e){
JOptionPane.showMessageDialog(null,"Date and Time Error");
}
}