📄 pagechange.java
字号:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class pageChange extends JPanel implements ActionListener
{
JPanel pan1, pan2, pan3, pan4;
JButton button1, button2, button3, clearButton, randomButton;
JTextField text1, text2, text3, text4;
String m_random = "";// 页面序列
int m, n, length;
int myt[];
randomNumber RN;
displayView FIFOTA, LRUTA, OptTA;
public pageChange()
{
pan1 = new JPanel();
pan2 = new JPanel();
pan3 = new JPanel();
text1 = new JTextField(4);
text2 = new JTextField(5);
text3 = new JTextField();
text4 = new JTextField();
text4.setEditable(false);
pan1.setLayout(new GridLayout(4, 2));
pan1.add(new JLabel(" wulikuaishu "));
pan1.add(text1);
pan1.add(new JLabel(" zhihuanyemianshu "));
pan1.add(text2);
pan1.add(new JLabel(" yebiaochangdu "));
pan1.add(text3);
pan1.add(new JLabel(" yemianhaoyinyongchuan "));
pan1.add(text4);
FIFOTA = new displayView();
LRUTA = new displayView();
OptTA = new displayView();
pan2.setLayout(new GridLayout(1, 3));
pan2.add(FIFOTA);
pan2.add(LRUTA);
pan2.add(OptTA);
button1 = new JButton("FIFO");
button2 = new JButton("LRU");
button3 = new JButton("Optimal");
randomButton = new JButton("Random");
clearButton = new JButton("Clear");
button1.addActionListener(this);
button2.addActionListener(this);
button3.addActionListener(this);
clearButton.addActionListener(this);
randomButton.addActionListener(this);
pan3.add(randomButton);
pan3.add(button1);
pan3.add(button2);
pan3.add(button3);
pan3.add(clearButton);
setLayout(new BorderLayout());
add(BorderLayout.NORTH, pan1);
add(BorderLayout.CENTER, pan2);
add(BorderLayout.SOUTH, pan3);
}
public void misInPut() {
try
{
String str1,str2;
str1 = "";
str2 = "";
m = Integer.parseInt(text1.getText());
n = Integer.parseInt(text2.getText());
length = Integer.parseInt(text3.getText());
if (m == 0 || n == 0 || length == 0)
{
JOptionPane.showMessageDialog(this, "qingshuruzifu", "tishi!", JOptionPane.ERROR_MESSAGE);
}
if (m > n && length != 0)
{
JOptionPane.showMessageDialog(this, "shurudewulikuaishudayuyemianshuhuoyemianchangduweio","jinggao!", JOptionPane.WARNING_MESSAGE);
text1.setText("0");
text2.setText("0");
text3.setText("0");
text4.setText("");
}
else
{
myt = new int[n];
RN = new randomNumber();
myt = RN.rand(n, length);
for (int i = 0; i < n; i++)
{
str2 = String.valueOf(myt[i]);
str1 = str1 + " " + str2;
}
m_random = str1;
// 产生随即页面序列
text4.setText("" + m_random);
}
}
catch (NumberFormatException ee)
{
JOptionPane.showMessageDialog(this, "shurushuzizifu!", "jinggao!",
JOptionPane.WARNING_MESSAGE);
text1.setText("0");
text2.setText("0");
text3.setText("0");
text4.setText("");
FIFOTA.text1.setText("0");
FIFOTA.text2.setText("0");
FIFOTA.text3.setText("0");
FIFOTA.text4.setText("0");
FIFOTA.textarea.setText(null);
LRUTA.text1.setText("0");
LRUTA.text2.setText("0");
LRUTA.text3.setText("0");
LRUTA.text4.setText("");
LRUTA.textarea.setText(null);
OptTA.text1.setText("0");
OptTA.text2.setText("0");
OptTA.text3.setText("0");
OptTA.text4.setText("");
OptTA.textarea.setText(null);
}
}
public void FIFO()
{
int m_absent;
double m_absentf;
int m_change;
double m_changef;
int mym[];
int m1 = 0, r;
int as = 0;
boolean x;
String str1, str2;
String m_list = "FIFOzhihuansuanfa";
mym = new int[m];
for (int i = 0; i < n; i++)
{
str1 = "";
str2 = "";
x = true;
for (int k = 0; k < m; k++)
{
if (myt[i] == mym[k])
{
for (r = k; r < m - 1; r++)
mym[r] = mym[r + 1];
mym[r] = myt[i];
x = false;
break;
}
}
if (x)
{
mym[0] = myt[i];
for (r = 0; r < m - 1; r++)
mym[r] = mym[r + 1];
mym[r] = myt[i];
as++;
}
int b;
for (int j = 0; j < m; j++)
{
b = mym[j];
str2 = String.valueOf(b);
str1 = str1 + " " + str2;
}
m_list = m_list + '\n' + str1;
}
m_absent = as-m;
m_absentf = (double) (as-m) / n;
if ((as - m) <= 0)
{
m_change = 0;
m_changef = 0;
}
else
{
m_change = n-(as - m);
m_changef = (double) (n-(as - m)) / n;
}
FIFOTA.text1.setText("" + m_absent);
FIFOTA.text2.setText("" + m_absentf);
FIFOTA.text3.setText("" + m_change);
FIFOTA.text4.setText("" + m_changef);
FIFOTA.textarea.setText("" + m_list);
}
public void LRU()
{
int m_absent;
double m_absentf;
int m_change;
double m_changef;
int mym[];
int myb[];
int as = 0;
myb = new int[n];
int m1 = 0, a;
boolean x;
String str2, str1;
String m_list = "LRUzhihuansuanfa";
mym = new int[m];
for (int i = 0; i < n; i++)
{
str1 = "";
str2 = "";
x = true;
for (int k = 0; k < m; k++)
{
if (myt[i] == mym[k])
{
myb[k] = myb[0];
for (int j = 0; j < m; j++)
{
if (j != k)
myb[j] = myb[j] + 1;
}
x = false;
m1++;
break;
}
}
if (x)
{
int c = 0, d;
if ((i-m1) <m)
{
a = i-m1;
}
else
{
d = myb[0];
for (int h = 0; h < m; h++)
{
if (d < myb[h])
{
d = myb[h];
c = h;
}
}
a = c;
}
mym[a] = myt[i];
myb[a] = 0;
for (int k = 0; k < m; k++)
{
if (k != a)
myb[k] = myb[k] + 1;
}
myb[a] = 0;
as++;
}
for (int j = 0; j < m; j++)
{
int b;
b = mym[j];
str2 = String.valueOf(b);
str1 = str1 + " " + str2;
}
m_list = m_list + "\n" + str1;
}
m_absent = as-m;
m_absentf = (double) (as-m) / n;
if ((as - m) <= 0)
{
m_change = 0;
m_changef = 0;
}
else
{
m_change = n-(as-m) ;
m_changef = (double) (n-(as-m)) / n;
}
LRUTA.text1.setText("" + m_absent);
LRUTA.text2.setText("" + m_absentf);
LRUTA.text3.setText("" + m_change);
LRUTA.text4.setText("" + m_changef);
LRUTA.textarea.setText("" + m_list);
}
public void Opt()
{
int m_absent;
double m_absentf;
int m_change;
double m_changef;
int mym[];
int myb[];
int as = 0;
myb = new int[n];
int m1 = 0, a;
boolean x;
String str2, str1;
String m_list = "Optimalzhihuansuanfa";
mym = new int[m];
for (int i = 0; i < n; i++)
{
str1 = "";
str2 = "";
x = true;
for (int k = 0; k < m; k++)
{
if (myt[i] == mym[k])
{
x = false;
m1++;
break;
}
}
if (x)
{
int c = 0, d;
if ((i-m1) <m)
{
a = i-m1;
}
else
{
for (int k = 0; k < m; k++)
{
for (int h = i; h < length; h++)
{
if (mym[k] == myt[h])
{
myb[k] = h;
break;
}
if (h == length - 1)
myb[k] = length;
}
}
d = myb[0];
for (int h = 0; h < m; h++)
{
if (d < myb[h])
{
d = myb[h];
c = h;
}
}
a = c;
}
mym[a] = myt[i];
myb[a] = 0;
for (int k = 0; k < m; k++)
{
if (k != a)
myb[k] = myb[k] + 1;
}
myb[a] = 0;
as++;
}
for (int j = 0; j < m; j++)
{
int b;
b = mym[j];
str2 = String.valueOf(b);
str1 = str1 + " " + str2;
}
m_list = m_list + "\n" + str1;
}
m_absent = as-m;
m_absentf = (double) (as-m) / n;
if ((as - m) <= 0)
{
m_change = 0;
m_changef = 0;
}
else
{
m_change = n-(as - m);
m_changef = (double) (n-(as - m)) / n;
}
OptTA.text1.setText("" + m_absent);
OptTA.text2.setText("" + m_absentf);
OptTA.text3.setText("" + m_change);
OptTA.text4.setText("" + m_changef);
OptTA.textarea.setText("" + m_list);
}
public void actionPerformed(ActionEvent e)
{
if (e.getSource() == randomButton)
{
misInPut();
}
if (e.getSource() == button1)
{
FIFO();
}
if (e.getSource() == button2)
{
LRU();
}
if (e.getSource() == button3)
{
Opt();
}
if (e.getSource() == clearButton)
{
text1.setText("0");
text2.setText("0");
text3.setText("0");
text4.setText("");
FIFOTA.text1.setText("0");
FIFOTA.text2.setText("0");
FIFOTA.text3.setText("0");
FIFOTA.text4.setText("0");
FIFOTA.textarea.setText(null);
LRUTA.text1.setText("0");
LRUTA.text2.setText("0");
LRUTA.text3.setText("0");
LRUTA.text4.setText("0");
LRUTA.textarea.setText(null);
OptTA.text1.setText("0");
OptTA.text2.setText("0");
OptTA.text3.setText("0");
OptTA.text4.setText("0");
OptTA.textarea.setText(null);
myt=new int[0];
}
}
public static void main(String[] args)
{
JFrame myframe = new JFrame();
pageChange pc = new pageChange();
JTabbedPane tab = new JTabbedPane();
tab.add("Page-Replacement Algorthms", pc);
myframe.setLayout(new BorderLayout());
myframe.add(BorderLayout.CENTER, tab);
myframe.setTitle("Computer Operating Systems Page-Replacement Algorthms");
myframe.setSize(950, 650);
myframe.show(true);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -