运行后错误如下:
java.lang.ClassCastException: javax.swing.JTable$1 cannot be cast to javax.swing.table.DefaultTableModel at mhs.RSS.actionPerformed(RSS.java:90)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
程序代码如下:
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.table.*;
import java.util.*;
import java.awt.*;
import java.awt.event.*;
import java.net.URL;
import java.util.List;
import java.util.*;
import java.text.SimpleDateFormat;
import com.sun.syndication.feed.synd.SyndCategory;
import com.sun.syndication.feed.synd.SyndContent;
import com.sun.syndication.feed.synd.SyndEnclosure;
import com.sun.syndication.feed.synd.SyndEntry;
import com.sun.syndication.feed.synd.SyndFeed;
import com.sun.syndication.io.SyndFeedInput;
import com.sun.syndication.io.XmlReader;
public class RSS extends Frame implements ActionListener
{
JLabel RSS = new JLabel("RSS:");
JTextField URL = new JTextField();
JButton JB= new JButton("确认");
Object[][]tablevalue = new Object[20][4];
String []name={"标题","作者","时间","摘要"};
JTable table = new JTable(tablevalue,name);
public RSS()
{
this.setTitle("欢迎使用RSS阅读器");
RSS.setBounds(100,570,60,60);
this.add(RSS);
URL.setBounds(170,570,400,50);
this.add(URL);
JB.setBounds(620,570,70,50);
this.add(JB);
JB.addActionListener(this);
table.setBounds(40,150,720,500);
TableColumn Column0 = table.getColumnModel().getColumn(0);
Column0.setPreferredWidth(80);
TableColumn Column1 = table.getColumnModel().getColumn(1);
Column1.setPreferredWidth(60);
TableColumn Column2 = table.getColumnModel().getColumn(2);
Column2.setPreferredWidth(60);
TableColumn Column3 = table.getColumnModel().getColumn(3);
Column3.setPreferredWidth(400);
table.setRowHeight(25);
this.add(new JScrollPane(table));
this.setBounds(100,200,800,700);
this.setVisible(true);
addWindowListener(new WindowAdapter()
{public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
}
public static void main(String args[])
{
new RSS();
}
@Override
public void actionPerformed(ActionEvent e)
{
// TODO Auto-generated method stub
if(e.getSource()==JB)
{
try {
//URL url = new URL(RSS.getText());
URL.setText("http://rss.sina.com.cn/ent/hot_roll.xml");
URL url = new URL(URL.getText());
XmlReader reader = new XmlReader(url);
SyndFeedInput input = new SyndFeedInput();
DefaultTableModel model = (DefaultTableModel)table.getModel(); //就是这句出问题了,大牛,怎么改啊 SyndFeed feed = input.build(reader);
List entries = feed.getEntries();
for (int i = 0; i < entries.size(); i++)
{ String[] arr=new String[4];
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
SyndEntry entry = (SyndEntry) entries.get(i);
arr[0]=entry.getTitle();
arr[1]=entry.getAuthor();
arr[2]=sdf.format(entry.getPublishedDate());
SyndContent description = entry.getDescription();
arr[3]=description.getValue();
model.addRow(arr);
}
table.invalidate();
}
catch (Exception error)
{
error.printStackTrace();
}
}
}
}
java.lang.ClassCastException: javax.swing.JTable$1 cannot be cast to javax.swing.table.DefaultTableModel at mhs.RSS.actionPerformed(RSS.java:90)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
程序代码如下:
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.table.*;
import java.util.*;
import java.awt.*;
import java.awt.event.*;
import java.net.URL;
import java.util.List;
import java.util.*;
import java.text.SimpleDateFormat;
import com.sun.syndication.feed.synd.SyndCategory;
import com.sun.syndication.feed.synd.SyndContent;
import com.sun.syndication.feed.synd.SyndEnclosure;
import com.sun.syndication.feed.synd.SyndEntry;
import com.sun.syndication.feed.synd.SyndFeed;
import com.sun.syndication.io.SyndFeedInput;
import com.sun.syndication.io.XmlReader;
public class RSS extends Frame implements ActionListener
{
JLabel RSS = new JLabel("RSS:");
JTextField URL = new JTextField();
JButton JB= new JButton("确认");
Object[][]tablevalue = new Object[20][4];
String []name={"标题","作者","时间","摘要"};
JTable table = new JTable(tablevalue,name);
public RSS()
{
this.setTitle("欢迎使用RSS阅读器");
RSS.setBounds(100,570,60,60);
this.add(RSS);
URL.setBounds(170,570,400,50);
this.add(URL);
JB.setBounds(620,570,70,50);
this.add(JB);
JB.addActionListener(this);
table.setBounds(40,150,720,500);
TableColumn Column0 = table.getColumnModel().getColumn(0);
Column0.setPreferredWidth(80);
TableColumn Column1 = table.getColumnModel().getColumn(1);
Column1.setPreferredWidth(60);
TableColumn Column2 = table.getColumnModel().getColumn(2);
Column2.setPreferredWidth(60);
TableColumn Column3 = table.getColumnModel().getColumn(3);
Column3.setPreferredWidth(400);
table.setRowHeight(25);
this.add(new JScrollPane(table));
this.setBounds(100,200,800,700);
this.setVisible(true);
addWindowListener(new WindowAdapter()
{public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
}
public static void main(String args[])
{
new RSS();
}
@Override
public void actionPerformed(ActionEvent e)
{
// TODO Auto-generated method stub
if(e.getSource()==JB)
{
try {
//URL url = new URL(RSS.getText());
URL.setText("http://rss.sina.com.cn/ent/hot_roll.xml");
URL url = new URL(URL.getText());
XmlReader reader = new XmlReader(url);
SyndFeedInput input = new SyndFeedInput();
DefaultTableModel model = (DefaultTableModel)table.getModel(); //就是这句出问题了,大牛,怎么改啊 SyndFeed feed = input.build(reader);
List entries = feed.getEntries();
for (int i = 0; i < entries.size(); i++)
{ String[] arr=new String[4];
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
SyndEntry entry = (SyndEntry) entries.get(i);
arr[0]=entry.getTitle();
arr[1]=entry.getAuthor();
arr[2]=sdf.format(entry.getPublishedDate());
SyndContent description = entry.getDescription();
arr[3]=description.getValue();
model.addRow(arr);
}
table.invalidate();
}
catch (Exception error)
{
error.printStackTrace();
}
}
}
}
{
JLabel RSS = new JLabel("RSS:");
JTextField URL = new JTextField();
JButton JB= new JButton("确认");
Object[][]tablevalue = new Object[20][4];
String []name={"标题","作者","时间","摘要"};
//JTable table = new JTable(tablevalue,name); 改也下边那样构造JTable试试看
DefaultTableModel dtm = new DefaultTableModel(tablevalue,name);
JTable jTable1 = new JTable(dtm); 这样试试看行不行?
public JTable(TableModel dm)Constructs a JTable that is initialized with dm as the data model, a default column model, and a default selection model. Parameters:
dm - the data model for the table
See Also:
createDefaultColumnModel(), createDefaultSelectionModel()