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()
문자열 결과를 얻을 수 있습니다.