www.pudn.com > htmlsaver.rar > LinkViewer.java
import javax.swing.*;
import javax.swing.table.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
public class LinkViewer implements ActionListener
{
protected Vector links;
protected JDialog dialog;
protected JButton delete;
protected JButton finish;
protected JButton add;
protected JTable table;
protected LinkModel model;
public LinkViewer(JFrame owner, Vector links)
{
this.links = links;
dialog = new JDialog(owner, "Link Viewer", true);
initDialog();
}
public LinkViewer(JDialog owner, Vector links)
{
this.links = links;
dialog = new JDialog(owner, "Link Viewer", true);
initDialog();
}
protected void initDialog()
{
dialog.getContentPane().setLayout(new BorderLayout());
JPanel panel = new JPanel(new FlowLayout(FlowLayout.CENTER));
delete = new JButton("Delete");
delete.addActionListener(this);
panel.add(delete);
add = new JButton("Add");
add.addActionListener(this);
panel.add(add);
finish = new JButton("Finish");
finish.addActionListener(this);
panel.add(finish);
dialog.getContentPane().add(panel, BorderLayout.SOUTH);
model = new LinkModel();
table = new JTable(model);
TableColumn column;
column = table.getColumnModel().getColumn(0);
column.setPreferredWidth(300);
column = table.getColumnModel().getColumn(1);
column.setPreferredWidth(150);
dialog.getContentPane().add(new JScrollPane(table), BorderLayout.CENTER);
dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
dialog.setSize(500, 500);
dialog.show();
}
public void actionPerformed(ActionEvent e)
{
if (e.getSource() == delete)
{
if (table.getSelectedRowCount() == 0)
return;
int[] rows = table.getSelectedRows();
for (int i = rows.length - 1; i >= 0; i--)
model.deleteLink(rows[i]);
model.refresh();
int row = rows[0];
if ((row > 0) && (row == links.size()))
row--;
if (row < links.size())
table.setRowSelectionInterval(row, row);
}
else if (e.getSource() == add)
{
LinkInput input = new LinkInput(dialog);
Link newLink = input.link;
if (newLink == null)
return;
links.add(newLink);
model.refresh();
}
else if (e.getSource() == finish)
{
dialog.hide();
}
}
class LinkModel extends AbstractTableModel
{
String[] columnNames = {"Link URL", "Link Text"};
public String getColumnName(int col) {
return columnNames[col].toString();
}
public int getRowCount() { return links.size(); }
public int getColumnCount() { return 2; }
public Object getValueAt(int row, int col) {
if (col == 0)
return ((Link)links.elementAt(row)).url;
else
return ((Link)links.elementAt(row)).text;
}
public void deleteLink(int row)
{
if ((row < 0) || (row >= links.size()))
return;
links.remove(row);
}
public void refresh()
{
this.fireTableDataChanged();
}
}
public static void main(String[] args)
{
new LinkViewer(new JFrame(),
GetURL.getURL(new SystemIn().readLine(), new Project()));
}
}