jList = new JList(listValue);//此处改为jList = new JList(lisValue);就会出现错误
什么意思?
你都没定义lisValue啊?你出错的信息是什么?就那一个java丢在那里,你叫别人怎么看?至少把你相关的出错信息贴出来啊
什么意思?
你都没定义lisValue啊?你出错的信息是什么?就那一个java丢在那里,你叫别人怎么看?至少把你相关的出错信息贴出来啊
调试欢乐多
Toolkit theKit = this.getToolkit();
Dimension wndSize = theKit.getScreenSize();
this.setResizable(false);
listValue = getListValue();//这句话提前
for(int i =0;i<listValue.size();i++)
{
System.out.println(listValue.get(i));
}
this.setContentPane(getJPanel());
this.setBounds(wndSize.width/4,wndSize.height/4,603, 401);
this.setTitle("Short Information Server");
this.setVisible(false);
this.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
}由于在
this.setContentPane(getJPanel());
中要用到listValue
所以
listValue = getListValue();
应该在
this.setContentPane(getJPanel());
前获取数据
否则就会有空指针了
at mainFrame.MainFrame.ConnectDatabase(MainFrame.java:653)
at mainFrame.MainFrame.getListValue(MainFrame.java:133)
at mainFrame.MainFrame.initialize(MainFrame.java:413)
at mainFrame.MainFrame.<init>(MainFrame.java:404)
at mainFrame.MainFrame.main(MainFrame.java:395)
listValue = getListValue();//这句话提前后会出现以上错误。
好像是数据库的错误啊?(ConnectDatabase)另外
所有的
dialog.add(title0);
应该改成
dialog.getContentPane().add(title0);
/*
* 创建日期 2004-11-17
*
* TODO 要更改此生成的文件的模板,请转至
* 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/
package mainFrame;
import java.awt.Component;
import java.awt.event.KeyAdapter;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Vector;import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPasswordField;
import javax.swing.JTextField;import javax.swing.JPanel;
import javax.swing.JList;import javax.swing.DefaultListSelectionModel;/**
* @author Administrator
*
* TODO 要更改此生成的类型注释的模板,请转至
* 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/
public class MainFrame extends JFrame implements ActionListener
{ /**
*
* @uml.property name="jPanel"
*/
private JPanel jPanel = null; private JLabel jLabel = null; private JLabel jLabel1 = null; /**
*
* @uml.property name="jTextField"
*/
private JTextField jTextField = null; private JLabel jLabel2 = null; /**
*
* @uml.property name="jTextField1"
*/
private JTextField jTextField1 = null; private JLabel jLabel3 = null;
private JLabel jLabel4 = null; /**
*
* @uml.property name="jTextField2"
*/
private JTextField jTextField2 = null; /**
*
* @uml.property name="jList"
*/
private JList jList = null;
private Vector listValue = null; /**
*
* @uml.property name="jButton"
*/
private JButton jButton = null; /**
*
* @uml.property name="jButton1"
*/
private JButton jButton1 = null; private JLabel jLabel5 = null;
private JLabel jLabel6 = null; /**
*
* @uml.property name="jTextField3"
*/
private JTextField DatabaseIp = null; /**
*
* @uml.property name="addListValue"
*/
private JTextField addListValue = null; private Connection connect = null; /**
*
* @uml.property name="defaultListModel"
*/
private DefaultListModel defaultListModel = null; // @jve:decl-index=0: /**
* This method initializes jPanel
*
* @return javax.swing.JPanel
*
* @uml.property name="jPanel"
*/
private Vector getListValue()
{
connect = ConnectDatabase(); // -----给JList付值----------------
listValue = new Vector(); try
{
String str = "select * from telphonelist where yesorno = 1";
Statement stmt = null;
stmt = connect.createStatement();
ResultSet rs = stmt.executeQuery(str);
while(rs.next())
{
listValue.addElement(rs.getString(2));
}
rs.close();
stmt.close();
}catch(SQLException e)
{
String message = "读取接收号码错误:" + e.getMessage();
String title = "读取接收号码错误";
int type = JOptionPane.ERROR_MESSAGE;
JOptionPane.showMessageDialog(this,message,title,type);
}
return listValue;
}
jList.setSelectionModel(defaultListSelectionModel1);
和
private DefaultListModel getDefaultListModel() {
if (defaultListModel == null) {
defaultListModel = new DefaultListModel();
}
return defaultListModel;
}
去掉,JList才可以显示内容。
呵呵 febchen兄,如何动态刷新JList里的内容?
jPanel.add(getJList(), null);
没有JList对象名,所以要刷新得整个panel以前刷新,否则就要建个JList对象,然后对这个对象更新数据,如:
JList jl=getJList();
jPanel.add(jl, null);更新时加一个方法:
public void updateList(){
//connect = ConnectAccess();
if(listValue==null)
listValue = new Vector();
listValue.clear();
try
{
String str = "select * from telphonelist where yesorno = 1";
Statement stmt = null;
stmt = connect.createStatement();
ResultSet rs = stmt.executeQuery(str);
while(rs.next())
{
listValue.addElement(rs.getString(2));
}
rs.close();
stmt.close();
}catch(SQLException e)
{
String message = e.getMessage();
String title = "error";
int type = JOptionPane.ERROR_MESSAGE;
JOptionPane.showMessageDialog(this,message,title,type);
}
jl.repaint(); //////
}