?? bank.java
字號:
package bankPackage;
import java.awt.*;
import java.awt.List;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
import javax.swing.table.*;
public class bank extends JFrame implements ActionListener{
String string;
JTextField requestAlternate;
int repuestAlternate;
JTextField proceNumberText,sourceNumberText;
int proceNumber,sourceNumber;
JTextField maxTextField[];
int max[][];
JTextField AllocationTextField[];
int allocation[][];
JTextField requestTextField;
int request[];
JTextField needJTextField;
int need[][];
JTextField systemJTextField;
int system[],systemF[];
JPanel MaxPanel,AllocationPanel;
JButton firstFrameSureButton,secondFrameSureButton,nextButton,resultButton,frame3Button,testButton;
JFrame firstFrame,secondFrame,thirdFrame;
JTable table;
Vector rowData,columnNames,vectorAll[],vectorAllF;
static int finall=0;
int Process[];
DefaultTableModel modle;
JPanel rightPanel,leftPanel,thirdPanel2;
JList list;
JLabel label1;
public bank()
{
//主窗口
firstFrame=new JFrame("銀行家算法的模擬");
Container c=firstFrame.getContentPane();
c.setLayout(new GridLayout(6,1));
//創建第一個面板
JPanel panel1=new JPanel(new FlowLayout());
requestTextField=new JTextField(10);
systemJTextField=new JTextField(10);
requestAlternate=new JTextField(10);
//creat logopanel
JPanel logoPanel=new JPanel(new FlowLayout());
Icon icon=new ImageIcon("E:/myjava/bank.JPG");
JLabel logoLabel=new JLabel(icon);///////////////////////
logoPanel.add(logoLabel);
c.add(logoPanel);
//creat panel
JLabel l1=new JLabel(" request 矩陣: ");
panel1.add(l1);
panel1.add(requestTextField);
panel1.add(new JLabel(" 請求進程:"));
panel1.add(requestAlternate);
JLabel l2=new JLabel(" system 矩陣: ");
panel1.add(l2);
panel1.add(systemJTextField);
panel1.setBorder(BorderFactory.createLineBorder(Color.darkGray));
//creat new panel
JPanel panelMaxAndAllocation=new JPanel(new GridLayout(1,2));
JLabel l3=new JLabel("MAX 矩陣:");
panelMaxAndAllocation.add(l3);
JLabel l4=new JLabel("Allocation 矩陣");
panelMaxAndAllocation.add(l4);
c.add(panel1);
c.add(panelMaxAndAllocation);
//將第二個面板加入
JPanel panel2=new JPanel(new GridLayout(1,2));
panel2.setBorder(BorderFactory.createLineBorder(Color.darkGray));
leftPanel=new JPanel();
rightPanel=new JPanel();
leftPanel.setBorder(BorderFactory.createLineBorder(Color.darkGray));
panel2.add(leftPanel);
rightPanel.setBorder(BorderFactory.createLineBorder(Color.darkGray));
panel2.add(rightPanel);
c.add(panel2);
//構建帶有滾動條的panel
rowData=new Vector(100);
columnNames=new Vector(100);
vectorAllF=new Vector();
columnNames.addElement("進程/資源情況");
columnNames.addElement("Max");
columnNames.addElement("Allocation");
columnNames.addElement("Need");
columnNames.addElement("Available");
modle= new DefaultTableModel(rowData,columnNames);
table=new JTable(modle);
table.setFont(new Font("TimeRoman",Font.ITALIC,17));
table.setForeground(Color.darkGray);
table.setRowHeight(25);
JScrollPane panel3 = new JScrollPane(table,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
panel3.setBorder(BorderFactory.createLineBorder(Color.darkGray));
c.add(panel3);
//creat buttonPanel
firstFrameSureButton=new JButton("確 定");
firstFrameSureButton.addActionListener(this);
firstFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
firstFrameSureButton.setFont(new Font("TimeRoman",Font.ITALIC,20));
nextButton=new JButton("N E X T");
nextButton.setFont(new Font("TimeRoman",Font.ITALIC,20));
resultButton=new JButton("顯 示");
testButton=new JButton("T E S T");
testButton.setFont(new Font("TimeRoman",Font.ITALIC,20));
testButton.addActionListener(this);
resultButton.setFont(new Font("TimeRoman",Font.ITALIC,20));
JPanel panel4=new JPanel(new FlowLayout());
panel4.add(firstFrameSureButton);
panel4.add(new JLabel(" "));
// panel4.add(nextButton);
//panel4.add(new JLabel(" "));
panel4.add(testButton);
panel4.add(new JLabel(" "));
panel4.add(resultButton);
nextButton.addActionListener(this);
resultButton.addActionListener(this);
c.add(panel4);
// 顯示窗口
Dimension screenSize =Toolkit.getDefaultToolkit().getScreenSize();
firstFrame.setSize(800,600);
firstFrame.setLocation( screenSize.width/2-(400),screenSize.height/2-(300));
//firstFrame.setResizable(false);
// 次窗口
secondFrame=new JFrame("proceNum/SourceNum");
secondFrame.setLayout(new FlowLayout());
proceNumberText=new JTextField(10);
sourceNumberText=new JTextField(10);
secondFrame.add(new JLabel("進程個數: "));
secondFrame.add(proceNumberText);
secondFrame.add(new JLabel("資源個數: "));
secondFrame.add(sourceNumberText);
secondFrameSureButton=new JButton("確 定");
secondFrameSureButton.addActionListener(this);
secondFrame.add(secondFrameSureButton);
secondFrame.setSize(200,180);
secondFrame.setLocation( screenSize.width/2-(100),screenSize.height/2-(80));
secondFrame.setVisible(true);
//creat frame3
thirdFrame=new JFrame("安全序列");
Container b=thirdFrame.getContentPane();
b.setLayout(new GridLayout(3,1));
JPanel thirdPanel1=new JPanel(new FlowLayout());
thirdPanel2=new JPanel(new GridLayout(1,2));
JPanel thirdPanel3=new JPanel(new FlowLayout());
//creat panel1
JLabel label=new JLabel("安 全 序 列",SwingConstants.CENTER);
label.setForeground(Color.RED);
label.setFont(new Font("TimeRoman",Font.ITALIC,30));
thirdPanel1.add(label);
b.add(thirdPanel1);
//creat panel2
label1=new JLabel("安全序列",SwingConstants.CENTER);
thirdPanel2.add(label1);
b.add(thirdPanel2);
//creat panel3
frame3Button=new JButton("確定");
thirdPanel3.add(frame3Button);
frame3Button.addActionListener(this);
b.add(thirdPanel3);
//顯示panel3
thirdFrame.setSize(300,180);
thirdFrame.setLocation( screenSize.width/2-(150),screenSize.height/2-(80));
}
public static void main(String[] args) {
new bank();
}
//的到請求矩陣以及系統當前的資源數目
public void getRequestNumber(String a,int b[])
{
for(int i=0;i<a.length();i++)
{
b[i]=Integer.parseInt(a.substring(i, i+1));
}
}
//得到max和allocation的具體數值,并且把它們存在數組里面
public void getMaxAndAllocation()
{
int field=0;
max=new int[proceNumber][sourceNumber];
allocation=new int[proceNumber][sourceNumber];
need=new int[proceNumber][sourceNumber];
request=new int[sourceNumber];
system=new int[sourceNumber];
systemF=new int[sourceNumber];
for(int i=0;i<max.length;i++)
for(int j=0;j<max[i].length;j++)
{
max[i][j]=Integer.parseInt(maxTextField[field].getText());
allocation[i][j]=Integer.parseInt(AllocationTextField[field].getText());
need[i][j]=max[i][j]-allocation[i][j];
field++;
}
}
//構造max和allocation的面板
public void setMax()
{
leftPanel.setLayout(new GridLayout(proceNumber,sourceNumber*2));
rightPanel.setLayout(new GridLayout(proceNumber,sourceNumber*2));
maxTextField= new JTextField[proceNumber*sourceNumber];
AllocationTextField=new JTextField[proceNumber*sourceNumber];
for(int j=0;j<maxTextField.length;j++)
{
maxTextField[j]=new JTextField(1);
AllocationTextField[j]=new JTextField(1);
}
for(int j=0;j<maxTextField.length;j++)
{
leftPanel.add(maxTextField[j]);
leftPanel.add(new JLabel(" "));
rightPanel.add(AllocationTextField[j]);
rightPanel.add(new JLabel(" "));
}
}
//向table里面添加數據
public void addNum()
{
String maxString=" ",allocationString=" ",
needString=" ",requestString=" ",systemString=" ";
for(int i=0;i<request.length;i++)
{
requestString=requestString+request[i]+" ";
systemString=systemString+system[i]+" ";
}
for(int i=0;i<max.length;i++)
{
for(int j=0;j<max[i].length;j++)
{
maxString=maxString+max[i][j]+" ";
allocationString=allocationString+allocation[i][j]+" ";
needString=needString+need[i][j]+" ";
}
if(i==0)
{
Object date[]={
1,maxString,allocationString,needString,systemString
};
modle.addRow(date);
}
if(i>0)
{
Object date[]={
i+1,maxString,allocationString,needString
};
modle.addRow(date);
}
maxString=" ";
allocationString=" ";
needString=" ";
}
}
public void Remove()//移除原有的,用于刷新表格 不知道為什么總是有越界的錯誤
{
int j= modle.getRowCount();
do{
modle.removeRow(j-1);
j--;
}while(modle.getRowCount()!=0);
}
//得到要處理的字符串
public void Process(int Process[])
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -