时间片轮转算法javaswing实现完整代码
时间: 2023-08-23 17:04:43 浏览: 44
下面是一个简单的时间片轮转算法的Java Swing实现示例代码:
```java
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.Timer;
public class TimeSliceRoundRobin extends JFrame {
private static final long serialVersionUID = 1L;
private static final int DEFAULT_QUANTUM = 100;
private static final int DEFAULT_DELAY = 10;
private static final int DEFAULT_WIDTH = 400;
private static final int DEFAULT_HEIGHT = 300;
private int quantum;
private ProcessQueue processQueue;
private Timer timer;
private JLabel processLabel;
private JLabel timeLabel;
private JButton addButton;
private JButton runButton;
private JButton stopButton;
private JTextField processField;
private JTextField timeField;
private JPanel controlPanel;
public TimeSliceRoundRobin() {
setTitle("Time Slice Round Robin");
setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
quantum = DEFAULT_QUANTUM;
processQueue = new ProcessQueue();
timer = new Timer(DEFAULT_DELAY, new TimerListener());
processLabel = new JLabel("Process:");
timeLabel = new JLabel("Time:");
addButton = new JButton("Add");
addButton.addActionListener(new AddButtonListener());
runButton = new JButton("Run");
runButton.addActionListener(new RunButtonListener());
stopButton = new JButton("Stop");
stopButton.addActionListener(new StopButtonListener());
processField = new JTextField();
processField.setPreferredSize(new Dimension(100, 25));
timeField = new JTextField();
timeField.setPreferredSize(new Dimension(100, 25));
controlPanel = new JPanel();
controlPanel.add(processLabel);
controlPanel.add(processField);
controlPanel.add(timeLabel);
controlPanel.add(timeField);
controlPanel.add(addButton);
controlPanel.add(runButton);
controlPanel.add(stopButton);
add(controlPanel, BorderLayout.NORTH);
}
private class AddButtonListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
String processName = processField.getText();
int time = Integer.parseInt(timeField.getText());
Process process = new Process(processName, time);
processQueue.add(process);
}
}
private class RunButtonListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
timer.start();
}
}
private class StopButtonListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
timer.stop();
}
}
private class TimerListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
if (!processQueue.isEmpty()) {
Process process = processQueue.getNext();
process.execute(quantum);
if (process.isFinished()) {
processQueue.remove(process);
} else {
processQueue.add(process);
}
}
}
}
public static void main(String[] args) {
TimeSliceRoundRobin frame = new TimeSliceRoundRobin();
frame.setVisible(true);
}
}
```
该示例代码包含一个`Process`类和一个`ProcessQueue`类,用于表示进程和进程队列。`TimeSliceRoundRobin`类实现了一个简单的用户界面,包含添加进程、运行和停止按钮以及进程名称和时间输入框。`TimerListener`类实现了计时器监听器,每个时间片执行一个进程,并在进程完成时将其从队列中删除。`AddButtonListener`类实现了添加按钮监听器,将新进程添加到队列中。`RunButtonListener`类实现了运行按钮监听器,启动计时器。`StopButtonListener`类实现了停止按钮监听器,停止计时器。