if(wast==xt)return0;
elsereturn1;
}
}
importjavax.swing.*;
importjava.awt.*;
importjava.awt.event.*;
importjava.sql.*;
importjavax.swing.tree.*;
importjavax.swing.event.*;
//创建简单窗口,动态显示任务时间表问题
publicclassTimeThingextendsJFrameimplementsActionListener,TreeSelectionListener,Runnable
{
publicJDesktopPanedesktopPane=newJDesktopPane();//桌面
JInternalFramejnew2=newJInternalFrame("完成顺序",true,true,true,true);//动态显示页面
privateStatementstmt1;//用于数据库查询
privateResultSetrs1;
workww[];//任务数组
publicTimeThing(workww[],JDesktopPanedesktopPane,JInternalFramejnew2){
//此构造方法用于创建线程,经行任务动态选择
this.ww=ww;
this.desktopPane=desktopPane;
this.jnew2=jnew2;
}
publicTimeThing()//创建窗口
{
super("任务时间表");
JMenuBarbar=newJMenuBar();
JPanelp1=newJPanel();p1.setMaximumSize(newDimension(300,600));
JScrollPanescrollPane=newJScrollPane();
JTreetree=InitialTree.Initial();//生成年月树
tree.addTreeSelectionListener(this);//TreeSelectionEvent监听
scrollPane.setViewportView(tree);
p1.setLayout(newBorderLayout());
p1.add(newJLabel("年中任务"),BorderLayout.NORTH);
p1.add(scrollPane,BorderLayout.CENTER);
bar.setOpaque(true);
JMenumfile=buildFileMenu();//创建菜单列表
bar.add(mfile);
setJMenuBar(bar);
ContainercontentPane=getContentPane();
BoxbaseBox=Box.createHorizontalBox();//水平Box布局
contentPane.add(baseBox);
BoxvBox=Box.createVerticalBox();
vBox.add(p1);//年月树
BoxvBox1=Box.createVerticalBox();
desktopPane.setAlignmentX(Component.CENTER_ALIGNMENT);
desktopPane.setMaximumSize(newDimension(1500,600));
vBox1.add(desktopPane);//桌面
desktopPane.setBackground(Color.gray);
baseBox.add(vBox);
baseBox.add(vBox1);
setSize(950,600);
setVisible(true);
setLocationRelativeTo(null);
}
publicJMenubuildFileMenu(){
//开始菜单
JMenuthefile=newJMenu("开始");
JMenuItemnewf=newJMenuItem("New");//新建一个任务安排
JMenuItemquit=newJMenuItem("Exit");
thefile.add(newf);
thefile.addSeparator();
thefile.add(quit);
newf.addActionListener(this);
quit.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente)
{
System.exit(0);
}
});
returnthefile;
}
publicvoidactionPerformed(ActionEvente)
{//新建任务信息窗口
if(e.getActionCommand().equals("New")){
finalJInternalFramejnew=newJInternalFrame("new",true,true,true,true);
JLabelj=newJLabel("年月");
JLabelj1=newJLabel("任务数");
JButtonb=newJButton("确定");
finalJTextFieldt2=newJTextField(10);
finalJTextFieldt1=newJTextField(10);
jnew.setLayout(newFlowLayout());
jnew.add(j);jnew.add(t1);
jnew.add(j1);jnew.add(t2);
jnew.add(b);
b.addActionListener(newActionListener(){
//输入任务名,期限,惩罚窗口
publicvoidactionPerformed(ActionEventex){
finalStringym=t1.getText();
finalStringn=t2.getText();
jnew.setVisible(false);
finalJInternalFramejnew1=newJInternalFrame("new",true,true,true,true);
jnew1.setLayout(newGridLayout(4,Integer.parseInt(n)+1));
finalJTextFieldtt[][]=newJTextField[3][Integer.parseInt(n)+1];
for(inti=0;i<=2;i++)
for(intj=0;j<=Integer.parseInt(n);j++)
{
tt[i][j]=newJTextField();jnew1.add(tt[i][j]);
}
tt[0][0].setText("任务");tt[0][0].setEditable(false);
tt[1][0].setText("截止日期");tt[1][0].setEditable(false);
tt[2][0].setText("延期惩罚");tt[2][0].setEditable(false);
for(inti=0;ijnew1.add(newJLabel());
JButtonb=newJButton("OK");
jnew1.add(b);
b.addActionListener(newActionListener(){
//读取任务信息
publicvoidactionPerformed(ActionEventes)
{
//形成期限数组和惩罚数组
intd[]=newint[Integer.parseInt(n)+1];
intw[]=newint[Integer.parseInt(n)+1];
workwo[]=newwork[Integer.parseInt(n)+1];
ww=newwork[Integer.parseInt(n)+1];
intjob[]=newint[d.length];
for(inti=1;i<=Integer.parseInt(n);i++)
{
wo[i]=newwork(tt[0][i].getText(),ym,Integer.parseInt(tt[1][i].getText()),Integer.parseInt(tt[2][i].getText()));
ww[i]=wo[i];
}
newSort().mergeSort(wo);//任务按惩罚力度排序
for(inti=1;i<=w.length-1;i++)
{
w[i]=wo[i].wast;
d[i]=wo[i].deathline;
}
for(inti=1;i<=w.length-1;i++)
{
System.out.print(wo[i].wast+"");
System.out.println(wo[i].deathline);
}
ints[]=newint[d.length];
intsum=Greedyjob.fasterJob(d,w,job,s);//及时任务选择与安排
System.out.println(sum);
jnew1.setVisible(false);
jnew2=newJInternalFrame("完成顺序",true,true,true,true);
jnew2.setLayout(newGridLayout(4,Integer.parseInt(n)+1));
finalJTextFieldtt1[][]=newJTextField[3][Integer.parseInt(n)+1];
for(inti=0;i<=2;i++)
for(intj=0;j<=Integer.parseInt(n);j++)
{
tt1[i][j]=newJTextField();
tt1[i][j].setEnabled(false);
jnew2.add(tt1[i][j]);
}
tt1[0][0].setText("任务");
tt1[1][0].setText("截止日期");
tt1[2][0].setText("延期惩罚");
for(intj=1;j<=Integer.parseInt(n);j++)
{
tt1[0][j].setText(wo[s[j]].name);
tt1[1][j].setText(wo[s[j]].deathline+"");
tt1[2][j].setText(wo[s[j]].wast+"");
}
//显示及时任务
for(intj=1;j<=Integer.parseInt(n);j++)
{
if(job[j]!
=0)
for(inti=1;i<=Integer.parseInt(n);i++)
if(Integer.parseInt(tt1[0][i].getText())==job[j])
{
tt1[0][i].setBackground(Color.blue);
tt1[1][i].setBackground(Color.blue);
tt1[2][i].setBackground(Color.blue);
}
}
//显示结果
for(inti=1;i<=Integer.parseInt(n);i++)
{if(job[i]!
=0)
{
if(i==1)
jnew2.add(newJLabel("选取过程:
"+wo[job[i]].name+"----->"));
else
jnew2.add(newJLabel(wo[job[i]].name+"------>"));
}