자바 간단한 계산기

1. 개요

저자는 기사뿐만 아니라 계산기, C ++을 사용하고 Qt를 썼다 전에 여기에 링크를

서면 스윙 자바와 이번 (이 차이는, 비트 큰 것 같습니다 잘 QT가 너무 강하다).

지도 첫 :
그림 삽입 설명 여기

2.UI

전체 레이아웃 용도 레이아웃 흐른다.

(1) 텍스트 상자

텍스트 상자 안에 JPanel의는 JTextField를 추가합니다.

boxField.setLayout(new FlowLayout());
box.setPreferredSize(new Dimension(300, 25));
boxField.add(box);

JTextField를 setPreferredSize를 요구하여 크기 () 대신에는 setSize의 ().

(2) 키

4 * 4 그리드 레이아웃 키는 개별 버튼을 추가 할 수 있습니다.

buttonsField.setLayout(new GridLayout(4, 4, 20, 20));
buttonsField.setPreferredSize(new Dimension(300, 300));
buttonsField.add(xxx);
//add....

3. 마우스 이벤트

, 그것에 대해 생각 버튼의 마우스 이벤트는 단추를 클릭 한 다음 텍스트 상자 내부에 이벤트 리스너를 추가 할 수있는 상응하는 반응, 따라이있을 것이다.

num0.addActionListener(v -> {
    box.setText(box.getText() + "0");
    mainFrame.requestFocus();
});

마우스 클릭 버튼, 버튼에 포커스를 얻을 수 있기 때문에 requestFocus를 ()이 라인 초점 백 JFrame의, 그것은 키보드 모니터의 뒷면에 영향을 미칠 것입니다.

4. 키보드 이벤트

키보드와 마우스 이벤트 유사한 이벤트가 각 키를 확인할 수 있습니다.
여기, JFrame의에 바로 위에 내부 다시 모든 KeyListener 다음 세 가지 방법을 등록한 모든 KeyListener입니다 :

public void keyPressed(KeyEvent e);
public void keyReleased(KeyEvent e);
public void keyTyped(KeyEvent e);

기본적으로 통해

if (e.getKeyCode() == KeyEvent.VK_xxxx)

각 키를 판단하기 위해 노트에 대한 유일한 *이 +이고
키보드가 저자 키패드 (당황 ....)에 의해 사용되지 않기 때문에, 직접하려고 + Shift + = * 필요 또는 8,

if (e.getKeyCode() == KeyEvent.VK_PLUS)
if (e.getKeyCode() == KeyEvent.VK_ADD)
if (e.getKeyCode() == KeyEvent.VK_MUTIPLY)

잘못된
것이이 (가)의 keyReleased ()에 다음 여기의 keyPressed 시프트를 누르면하고 있는지 여부를 확인하기 위해 필요한 경우 (8)에서 특별 심사 위원 =

else if (e.getKeyCode() == KeyEvent.VK_8)
    box.setText(box.getText() + (shift ? "*" : "8"));
else if(e.getKeyCode() == KeyEvent.VK_EQUALS)
{
    if(shift)
        box.setText(box.getText() + "+");
    else
        setResult();
}

계산식

표현 부분 평가 여기에게 나중에 코드에서 자세히 설명하지.

그것은 사용하기 간단

GetResult.setExpression();

그때이 정적 메소드 세트 식

GetResult.valid()

에 의해 다음, 법률, 합법 여부를 확인하려면

GetResult.result()

문자열 결과를 얻을 수 있습니다.

6. 테스트

그림 삽입 설명 여기

그림 삽입 설명 여기

7. 소스

GitHub의

클라우드 코드

추천

출처www.cnblogs.com/Blueeeeeeee/p/12014434.html