페이스북 로그인
2018-02-18 15:38:00
StatCalculator2
아쉽게도.. 넣으려고 했던 물약과 각성 강화는 기술적 문제로 넣지 못했습니다. 이 부분은 ver3로 미뤘습니다
그래도 전 버전보다는 훨씬 실용성이 높아진 편입니다
솔직히 이번 소스코드는 gui를 배운사람이라도 워낙 스파게티 소스라서 이해를 못하실 겁니다. ㅋㅋ
|소스코드|
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class StatCalculator2 extends JFrame implements ActionListener{
double hp, atk, def, hpgem, atkgem, defgem, eval, stat;
JPanel Pnl1, Pnl2;
JLabel HP, ATK, DEF, HPGEM, ATKGEM, DEFGEM, EVAL, STAT, EVALP, STATP;
JTextField HPS, ATKS, DEFS, HPGEMS, ATKGEMS, DEFGEMS;
JButton Calculate, Clear;
TextArea Rec;
public StatCalculator2(){
setLayout(new BorderLayout());
Pnl1=new JPanel();
Pnl2=new JPanel();
Pnl1.setLayout(new GridLayout(6, 2));
Pnl2.setLayout(new GridLayout(3, 2));
HP=new JLabel("HP");
ATK=new JLabel("ATK");
DEF=new JLabel("DEF");
HPGEM=new JLabel("GEM");
ATKGEM=new JLabel("GEM");
DEFGEM=new JLabel("GEM");
EVAL=new JLabel("EVAL: ");
STAT=new JLabel("STAT: ");
EVALP=new JLabel();
STATP=new JLabel();
HP.setBackground(Color.YELLOW);
HP.setOpaque(true);
ATK.setBackground(Color.RED);
ATK.setOpaque(true);
DEF.setBackground(Color.BLUE);
DEF.setOpaque(true);
HPGEM.setBackground(Color.YELLOW);
HPGEM.setOpaque(true);
ATKGEM.setBackground(Color.RED);
ATKGEM.setOpaque(true);
DEFGEM.setBackground(Color.BLUE);
DEFGEM.setOpaque(true);
HPS=new JTextField();
ATKS=new JTextField();
DEFS=new JTextField();
HPGEMS=new JTextField();
ATKGEMS=new JTextField();
DEFGEMS=new JTextField();
Calculate=new JButton("Calculate");
Clear=new JButton("Clear");
Calculate.addActionListener(this);
Clear.addActionListener(this);
Rec=new TextArea();
// define
Pnl1.add(HP);
Pnl1.add(HPGEM);
Pnl1.add(HPS);
Pnl1.add(HPGEMS);
Pnl1.add(ATK);
Pnl1.add(ATKGEM);
Pnl1.add(ATKS);
Pnl1.add(ATKGEMS);
Pnl1.add(DEF);
Pnl1.add(DEFGEM);
Pnl1.add(DEFS);
Pnl1.add(DEFGEMS); // Pnl1
Pnl2.add(EVAL);
Pnl2.add(STAT);
Pnl2.add(EVALP);
Pnl2.add(STATP);
Pnl2.add(Calculate);
Pnl2.add(Clear); // Pnl2
// addItem
add(Pnl1, BorderLayout.NORTH);
add(Rec, BorderLayout.CENTER);
add(Pnl2, BorderLayout.SOUTH);
// add
setTitle("드빌 스텟 계산기 2");
setSize(500, 500);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
// set
}
public static void main(String[] args) {
new StatCalculator2();
}
@Override
public void actionPerformed(ActionEvent e) {
Object bt=e.getSource();
if(bt==Calculate) {
try {
hp=Double.parseDouble(HPS.getText().toString());
atk=Double.parseDouble(ATKS.getText().toString());
def=Double.parseDouble(DEFS.getText().toString());
hpgem=Double.parseDouble(HPGEMS.getText().toString());
atkgem=Double.parseDouble(ATKGEMS.getText().toString());
defgem=Double.parseDouble(DEFGEMS.getText().toString());
}catch(NumberFormatException e1) {
System.out.println("NumberFormatException");
}finally {
eval=(hp+hpgem)+4*(atk+atkgem+def+defgem);
stat=(double)((hp+hpgem)/4+atk+atkgem+def+defgem);
EVALP.setText(""+eval);
STATP.setText(""+stat);
Rec.append((hp+hpgem)+" "+(atk+atkgem)+" "+(def+defgem)+" "+eval+" "+stat+" ");
} // Exception Handling
}else if(bt==Clear) {
HPS.setText("");
ATKS.setText("");
DEFS.setText("");
HPGEMS.setText("");
ATKGEMS.setText("");
DEFGEMS.setText("");
}
} // actionPerformed
}
|실행 화면|

위 화면은 드래곤의 기본 스탯을 계산하는 화면입니다. 추가된 것들은 GEM입력칸과 텍스트 에어리어, 그리고 Clear 버튼이 있죠
(위 화면에서 문제는 사용자가 젬의 입력을 원하지 않아 젬을 입력하지 않았는데도, 예외처리 부분에서 NumberFormatException이
발생하다록 설정했다는 것입니다..)

다음과 같이 젬을 입력하면 젬까지 포함해서 eval과 stat을 계산합니다. 그리고 텍스트 에어리어에 스탯이 기록되는 것들이 보이시죠?

그리고 텍스트 에어리어의 특성상, 다음과 같이 내용을 수정 가능합니다.
그리고, Ctrl+A, Ctrl+C로 전체 내용을 복사할 수도 있습니다!

마지막으로 Clear 버튼을 누르면 위 텍스트필드에 입력되어 있던 수들이 모두 초기화됩니다!
다음 버전3에서는 각성 강화와 여러 물약들과 여러 편의기능들을 더 추가해보겠습니다.
코드 지적 받고 문제시 글삭하겠습니다.

다운로드는 못받나요?
2018-02-21 11:39:23
exe로 만드는 방법은 잘 모르겠네요.. 이클립스에 코드 복붙해서 쓰는수밖에... ㅠㅠ
2018-02-21 21:39:10

네..
2018-02-21 22:12:47

음... 버전 3에서는 인챈트도 들어갔으면 좋겠네요 ㅎㅎ
2018-02-21 09:03:19

암튼 대단하십니다! ㅊㅌ
2018-02-21 09:03:40

이해 못해도 추튀!!
2018-02-21 02:07:28
오홍 난잡하지않고 개인적으론 정리 잘되있는 듯 한데용
swing..이면 편하겠네요 ㅇㅂㅇ
색넣는거 안귀찮으셨나요
2018-02-20 22:51:05
label이 아닌 jlabel이라 그냥 setcolor로는 안되더라 구요.. 그래서 왜 안되나 찾아보며 고생좀 했습죠... ㅎㅎ
2018-02-21 21:24:38

대단하시다..
2018-02-19 21:29:50
스탯 7백인데 ~.~으로 바꾸는 방법이 있나요?
2018-02-19 17:15:08

무슨 소리인지 모르겠다..
2018-02-19 15:10:43

?먼소리..? 나만 이해안감?
2018-02-18 22:27:17

뭔소린지 하.나.도.모르는 바보는 나갑니다 ㅋㅋㅋㅋㅋㅋㅋ
2018-02-18 19:29:44

헐 대단하다
2018-02-18 19:05:42

먼 외계어중독이여?
2018-02-18 18:39:15

굿.
2018-02-18 17:45:24

이게머지
2018-02-18 16:12:17

Eval계산기요
2018-02-18 17:01:13

??
2018-02-18 16:05:03