📄 alu.java
字号:
import java.awt.*;
import java.awt.event.*;
//import java.awt.Graphics;
//import java.awt.Font;
import java.util.*;
public
class Alu
extends Frame
implements ActionListener
{
int r1 = 0;
int r2 = 0;
int r3 = 0;
int r4 = 0;
int r5 = 0;
int r6 = 0;
int r7 = 0;
int r8 = 0;
int g1 = 0;
int g2 = 0;
int g3 = 0;
int g4 = 0;
int g5 = 0;
int g6 = 0;
int g7 = 0;
int g8 = 0;
int b1 = 0;
int b2 = 0;
int b3 = 0;
int b4 = 0;
int b5 = 0;
int b6 = 0;
int b7 = 0;
int b8 = 0;
Color blk = new Color(0,0,0); //NOT or INVERSE
Color blu = new Color(0,0,255); //0
Color grn = new Color(0,255,0); //AC
Color yel = new Color(0,255,255); //OR
Color red = new Color(255,0,0); //BUS
Color vio = new Color(255,0,255); //XOR
Color who = new Color(255,255,0); //AND
int d1 = 0;
int d2 = 0;
int d3 = 0;
int d4 = 0;
/////////////////////////////////////////////////////////////////
public void update( Graphics screen )
{
paint( screen ); // used for double buffering
}
/////////////////////////////////////////////////////////////////
Alu( Frame parent, String windowTitle )
{
super( windowTitle );
CPUBox = ( CPU ) parent;
MenuBar mbar = new MenuBar();
fileMenu = new Menu( "File" );
closeWindowMenuItem = new MenuItem( "Close Window" );
closeWindowMenuItem.addActionListener( this );
fileMenu.add( closeWindowMenuItem );
mbar.add( fileMenu );
setMenuBar( mbar );
addWindowListener(
new WindowAdapter()
{
public void windowClosing( WindowEvent e )
{
setVisible( false );
}
}
);
setSize( 350, 250 );
}
public void clear()
{
r1 = 0;
r2 = 0;
r3 = 0;
r4 = 0;
r5 = 0;
r6 = 0;
r7 = 0;
r8 = 0;
g1 = 0;
g2 = 0;
g3 = 0;
g4 = 0;
g5 = 0;
g6 = 0;
g7 = 0;
g8 = 0;
b1 = 0;
b2 = 0;
b3 = 0;
b4 = 0;
b5 = 0;
b6 = 0;
b7 = 0;
b8 = 0;
d1 = 0;
d2 = 0;
d3 = 0;
d4 = 0;
}
public void paint( Graphics g )
{
offScrImALU = createImage( 350, 250 );
Graphics offScrALU = offScrImALU.getGraphics();
Font f1 = new Font( "SansSerif", Font.PLAIN, 11 );
Font f2 = new Font( "SansSerif", Font.BOLD, 11 );
Color cc1 = new Color( r1, g1, b1 );
Color cc2 = new Color( r2, g2, b2 );
Color cc3 = new Color( r3, g3, b3 );
Color cc4 = new Color( r4, g4, b4 );
Color cc5 = new Color( r5, g5, b5 );
Color cc6 = new Color( r6, g6, b6 );
Color cc7 = new Color( r7, g7, b7 );
Color cc8 = new Color( r8, g8, b8 );
//first mux
offScrALU.setFont(f1);
offScrALU.drawRect(255,93,35,75);
offScrALU.setFont(f2);
offScrALU.drawString("MUX",262,110);
offScrALU.setFont(f1);
offScrALU.drawLine(290,130,300,130);//line going to string below
offScrALU.setColor(cc8);
offScrALU.drawString("To AC",305,135);
offScrALU.setColor(cc7);
offScrALU.drawString("s",270,165);
offScrALU.drawLine(272,168,272,178);//line going to string below
offScrALU.drawString("1",258,122);
offScrALU.drawString("ALUSEL",255,189);
offScrALU.setColor(cc6);
offScrALU.drawString("0",258,147);
offScrALU.setColor(cc1);
//PA
offScrALU.drawRect(160,121,50,65);
offScrALU.setFont(f2);
offScrALU.drawString("Parallel",165,140);
offScrALU.drawString("Adder",170,152);
offScrALU.setFont(f1);
offScrALU.setColor(cc5);
//offScrALU.drawString("Cin",177,181);
//offScrALU.drawLine(184,184,184,194);
//offScrALU.drawString("ACINC",168,205);
offScrALU.setColor(cc1);
offScrALU.drawLine(92,80,160,80); //lines for AC
offScrALU.drawLine(123,80,123,145);
offScrALU.drawLine(123,145,160,145);
offScrALU.setColor(cc3);
offScrALU.drawString("AC",75,84);
offScrALU.setColor(cc1);
offScrALU.drawLine(92,171,160,171); //lines for DR
offScrALU.drawLine(143,171,143,90);
offScrALU.drawLine(143,90,160,90);
offScrALU.setColor(cc4);
offScrALU.drawString("DR",75,176);
offScrALU.setColor(cc1);
offScrALU.drawLine(210,156,219,156);// PA to MUX
offScrALU.drawLine(219,156,219,143);// PA to MUX
offScrALU.drawLine(219,143,255,143);// PA to MUX
//AND
offScrALU.drawArc(175,75,16,20,90,-180);
offScrALU.drawLine(183,75,160,75);
offScrALU.drawLine(160,75,160,95);
offScrALU.drawLine(160,95,183,95);
offScrALU.drawLine(191,85,244,85);//line to MUX
offScrALU.drawLine(244,85,244,118);//line to MUX
offScrALU.drawLine(244,118,255,118);//line to MUX
offScrALU.fillOval(123,80,4,4);
offScrALU.fillOval(142,168,4,4);
//red little dots
offScrALU.setColor(Color.red);
offScrALU.fillRect(d1-3,d2-3,6,6);
offScrALU.fillRect(d3-3,d4-3,6,6);
// used for double buffering
g.drawImage(offScrImALU, 0, 0, this);
}
public void actionPerformed( ActionEvent e )
{
Object eventSource = e.getSource();
if ( eventSource == closeWindowMenuItem )
{
setVisible( false );
}
}
private Menu fileMenu;
private MenuItem closeWindowMenuItem;
private Image offScrImALU; // used for double buffering
private CPU CPUBox;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -