模仿课本上敲的,不过还是很有收获,说明太弱了。。。。
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.GridLayout;
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;
public class LogicALU extends JFrame{
private final int SIZE=3;
private int value1,value2;
private JLabel words[],hints[];
private JButton buttons[];
private JTextField numbers[],results[];
private JPanel northPanel,southPanel;
//constructor
LogicALU(){
super("a program for testing logic arithmetica");
//get the container
Container container=getContentPane();
//create new panel
northPanel=new JPanel();
northPanel.setLayout(new GridLayout(4,3));
southPanel=new JPanel();
southPanel.setLayout(new GridLayout(1,4));
words=new JLabel[3];
hints=new JLabel[3];
numbers=new JTextField[3];
results=new JTextField[3];
//create the labels
for(int i=0;i<words.length;i++)
words[i]=new JLabel();
//set text on label
words[0].setText("enter two integers");
words[1].setText("");
words[2].setText("bit representations");
//add labels into panel
for(int i=0;i<words.length;i++)
northPanel.add(words[i]);
//create new components and set properties
for(int i=0;i<hints.length;i++)
hints[i]=new JLabel();
hints[0].setText("value1");
hints[1].setText("value2");
hints[2].setText("result");
for(int i=0;i<numbers.length;i++)
numbers[i]=new JTextField(8);
numbers[2].setEditable(false);
for(int i=0;i<results.length;i++){
results[i]=new JTextField(40);
results[i].setEditable(false);
}
//add components into panel
for(int i=0;i<SIZE;i++){
northPanel.add(hints[i]);
northPanel.add(numbers[i]);
northPanel.add(results[i]);
}
buttons=new JButton[4];
//create new buttons
for(int i=0;i<buttons.length;i++)
buttons[i]=new JButton();
buttons[0].setText("AND");
//add action listener
buttons[0].addActionListener(
new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
value1=Integer.parseInt(numbers[0].getText().toString());
value2=Integer.parseInt(numbers[1].getText().toString());
results[0].setText(getBits(value1));
results[1].setText(getBits(value2));
results[2].setText(getBits(value1&value2));
numbers[2].setText(String.valueOf(value1&value2));
//results[0].setText(String.valueOf(value1));
//results[1].setText(String.valueOf(value2));
//results[2].setText(String.valueOf(value1&value2));
}
});
buttons[1].setText("OR");
buttons[1].addActionListener(
new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
value1=Integer.parseInt(numbers[0].getText().toString());
value2=Integer.parseInt(numbers[1].getText().toString());
results[0].setText(getBits(value1));
results[1].setText(getBits(value2));
results[2].setText(getBits(value1|value2));
numbers[2].setText(String.valueOf(value1|value2));
}
});
buttons[2].setText("XOR");
//add action listener
buttons[2].addActionListener(
new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
value1=Integer.parseInt(numbers[0].getText().toString());
value2=Integer.parseInt(numbers[1].getText().toString());
results[0].setText(getBits(value1));
results[1].setText(getBits(value2));
results[2].setText(getBits(value1^value2));
numbers[2].setText(String.valueOf(value1^value2));
}
});
buttons[3].setText("COMPLEMENT");
buttons[3].addActionListener(
new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
value1=Integer.parseInt(numbers[0].getText().toString());
value2=Integer.parseInt(numbers[1].getText().toString());
results[0].setText(getBits(~value1));
results[1].setText(getBits(~value2));
results[2].setText("");
}
});
//add button into panel
for(int i=0;i<buttons.length;i++)
southPanel.add(buttons[i]);
//add panels into container
container.add(northPanel,BorderLayout.NORTH);
container.add(southPanel,BorderLayout.SOUTH);
setSize(1000,200);
setVisible(true);
}
//get String of value
private String getBits(int value){
StringBuffer buffer;
buffer=new StringBuffer();
int tmp=1<<31;
for(int i=0;i<32;i++){
if((tmp&value)==0)
buffer.append('0');
else buffer.append('1');
value<<=1;
}
return buffer.toString();
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
LogicALU logicALU=new LogicALU();
logicALU.setDefaultCloseOperation(EXIT_ON_CLOSE);
}
}