javaswing表相关操作

public class DownTaskTable extends JTable
{
private DownTaskTableModel downTaskTableModel;

private DownedItemInfoPanel mInfoPanel;
JPopupMenu jpop = new JPopupMenu();
JMenuItem open = new JMenuItem("打开目录");
public DownTaskTable(DownTaskModel downTaskModel, DownedItemInfoPanel mInfoPanel ,int type)
{
this.mInfoPanel = mInfoPanel;
init(downTaskModel,type);
jpop.add(open);
jpop.setUI(new MotifPopupMenuUI());
open.setUI(new BasicButtonUI());
open.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
try {
int rowIndex = getSelectedRow();
final DownTaskItem downTaskItem = downTaskTableModel.getItemValue(rowIndex);
String filePath = downTaskItem.getFilePath();
System.out.println("filePath"+filePath);
String exec = "explorer /select, " + filePath;
Runtime.getRuntime().exec(exec);
System.out.println(exec);

} catch (IOException e1) {
e1.printStackTrace();
}
}
});
}
public JTable init(final DownTaskModel downTaskModel,int type)
{
SwingUtitle.setTableUI(this);
downTaskTableModel = new DownTaskTableModel(downTaskModel,type);

setModel(downTaskTableModel);

// 表可以被改变宽度,但不能拖走.
this.getTableHeader().setReorderingAllowed(false);
tableHeader.setBackground(new Color(227, 234, 240));
// 列的宽度控制.
TableColumnModel tc = this.getColumnModel();
// 状态列
tc.getColumn(0).setPreferredWidth(50);
tc.getColumn(0).setMinWidth(30);
// 文件名
tc.getColumn(1).setPreferredWidth(210);
tc.getColumn(1).setMinWidth(120);
// 进度
tc.getColumn(2).setPreferredWidth(70);
tc.getColumn(2).setMinWidth(30);
// 速度
tc.getColumn(3).setMinWidth(30);
// 剩余时间
tc.getColumn(4).setMinWidth(50);
// 用时
tc.getColumn(5).setMinWidth(50);
// 文件大小
tc.getColumn(6).setPreferredWidth(80);
tc.getColumn(6).setMinWidth(60);

tableHeader.setPreferredSize(new Dimension(780, 29));
Font LABEL_FONT = new Font("微软雅黑", Font.PLAIN, 16);
tableHeader.setFont(LABEL_FONT);
tableHeader.setForeground(PhoneView.LABEL_FONT_COLOR);

this.setRowHeight(37);
this.setFont(LABEL_FONT);

//监听器,当选择列时调用.用于显示任务信息.
DefaultListSelectionModel dlsm=(DefaultListSelectionModel)this.getSelectionModel();

//单选
dlsm.setSelectionMode(DefaultListSelectionModel.SINGLE_INTERVAL_SELECTION);

dlsm.addListSelectionListener(new ListSelectionListener()
{

public void valueChanged(ListSelectionEvent e)
{
//源.
ListSelectionModel lm=(ListSelectionModel)e.getSource();
if(e.getValueIsAdjusting())
{
//过滤一次响应.
return;
}
//得到被选择的行.
int rowIndex=lm.getLeadSelectionIndex();
int size = downTaskTableModel.getSize();
if (rowIndex < 0 || rowIndex >= size){

mInfoPanel.setDownTaskItem(null);
DownloadManangerView.pauseButton.setEnabled(false);
DownloadManangerView.startButton.setEnabled(false);
DownloadManangerView.deleteButton.setEnabled(false);
return;
}
DownTaskItem taskItem = downTaskTableModel.getItemValue(rowIndex);
if(taskItem.getStatus()==DownTaskItem.STATUS_RUN)
{
DownloadManangerView.pauseButton.setEnabled(true);
DownloadManangerView.startButton.setEnabled(false);
DownloadManangerView.deleteButton.setEnabled(true);

}else if(taskItem.getStatus()==DownTaskItem.STATUS_END)
{
DownloadManangerView.pauseButton.setEnabled(false);
DownloadManangerView.startButton.setEnabled(false);
DownloadManangerView.deleteButton.setEnabled(true);
}
else if(taskItem.getStatus()==DownTaskItem.STATUS_PAUSE)
{
DownloadManangerView.pauseButton.setEnabled(false);
DownloadManangerView.startButton.setEnabled(true);
DownloadManangerView.deleteButton.setEnabled(true);
}

//去数据库中查询
DbModel dbModel = new DbModel(DownModel.DB_TABLE_NAME,DownModel.DB_PATH);
List<Map<String, Object>> list = dbModel.query(taskItem.getUrl());

//只要将详细信息显示的条目重数据库中取出
if(null!=list && list.size()>0)
{
for(int i=0;i<list.size();i++)
{
Map<String, Object> map = list.get(i);
//简介
taskItem.setContent((String) map.get("CONTENT"));
taskItem.setFileName((String) map.get("FILENAME"));
}
}
else
{
PhoneSyncClient.getInstance().sendDownloadUrl(taskItem.getUrl());
}
mInfoPanel.setDownTaskItem(taskItem);
}
});

this.addMouseListener(new MouseAdapter() {
// 行内双击事件.
public void mouseClicked(MouseEvent e) {
if (e.getButton() == 3)
return;// 过滤右键
if (e.getClickCount() == 2)// 得到鼠标双击事件.
{
int rowIndex = getSelectedRow();
// 得到被选择的行.这边可能就存到一个对象中去了
if (rowIndex < 0 || rowIndex >= downTaskTableModel.getSize())
{
mInfoPanel.setDownTaskItem(null);
DownloadManangerView.pauseButton.setEnabled(false);
DownloadManangerView.startButton.setEnabled(false);
DownloadManangerView.deleteButton.setEnabled(false);
return;
}
else
{
DownTaskItem downTaskItem = downTaskTableModel.getItemValue(rowIndex);
//如果下载任务的状态是正在下载则让其暂停.
if (downTaskItem.getStatus() == DownTaskItem.STATUS_RUN)
{
DownloadThreadMananger.getInstance(null).stop(downTaskItem);
// 暂停按钮被禁用.
DownloadManangerView.pauseButton.setEnabled(false);
downTaskItem.setStatus(DownTaskItem.STATUS_PAUSE);
DownloadManangerView.startButton.setEnabled(true);
}
//如果状态时暂停
else if(downTaskItem.getStatus()==DownTaskItem.STATUS_PAUSE)
{
downTaskItem.setStatus(DownTaskItem.STATUS_WAIT);
DownloadManangerView.pauseButton.setEnabled(true);
DownloadManangerView.startButton.setEnabled(false);
}
//完成状态
else if (downTaskItem.getStatus() == DownTaskItem.STATUS_END)
{
// 得到文件路径与文件名.
DownloadManangerView.pauseButton.setEnabled(false);
DownloadManangerView.startButton.setEnabled(false);
DownloadManangerView.deleteButton.setEnabled(false);
}
}
}
}

//行内右击事件.只在已经存在任务的行内有效.
public void mouseReleased(MouseEvent ex)
{
if (ex.getButton() != MouseEvent.BUTTON3)// 过滤左键.
return;

Point point = new Point(ex.getX(),ex.getY()); //获得坐标点,
final int row = rowAtPoint(point); //根据坐标点获得行的索引.
final DownTaskItem downTaskItem = downTaskTableModel.getItemValue(row);
requestFocus();//行获得焦点.
setRowSelectionInterval(row, row);

//准备弹出一个右键菜单.
jpop.show((Component)ex.getSource(), ex.getX(),ex.getY());
open.setEnabled(null!=downTaskItem);
}

});

//网格颜色.
this.setGridColor(new Color(192, 192, 192));
//表头.
JTableHeader downTableHeader= this.getTableHeader();

//表头有下边框
downTableHeader.setBorder(BorderFactory.createLineBorder(new Color(0, 0, 0)));
BorderFactory.createMatteBorder(0, 0, 1, 0, Color.gray);
downTableHeader.setBorder(UIManager.getBorder("TableHeader.cellBorder"));

// //构造单元格的渲染器.
// DefaultTableCellRenderer dtc=new DefaultTableCellRenderer();
// //设置背景色与容器背景色一致.
// dtc.setBackground(new Color(227, 234, 240));
//将表头设置成此渲染器.
//downTableHeader.setDefaultRenderer(dtc);
this.setDragEnabled(false);

return this;
}

public void setType(int type){
downTaskTableModel.setType(type);
clearSelection();
}

/**
* 返回一个设置完成的JScrollPane
* @param table
* @return
*/
public static JScrollPane getJScrollPane(JTable table)
{
JScrollPane jScrollTable = new JScrollPane();
//滚动容器的基本设置
jScrollTable.setBackground(new java.awt.Color(255, 255, 255));
//设置水平的滚动条
jScrollTable.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
//设置垂直的滚动条
jScrollTable.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
//滚动条没有边框.
jScrollTable.setBorder(BorderFactory.createEmptyBorder());
jScrollTable.getVerticalScrollBar().setUI(new MyScrollBarUI());
//表格所在的滚动容器背景色.
jScrollTable.setBackground(new Color(226, 238, 249));
//载入表格.
jScrollTable.setViewportView(table);

//抛出滚动容器.
return jScrollTable;
}

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值