package jang;
import java.awt.Color;
import java.awt.Graphics;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import com.google.gson.Gson;
import airplane.Air;
import org.json.XML;
public class Shrimp extends JFrame {
int panelX = 400;
int panelY = 180;
// 공공데이터에서 받아온 값을 사용하기 위한 스태틱 변수
static int aa = 0;
static int bb = 0;
static int cc = 0;
static int a = 0;
static int b = 0;
static int c = 0;
//패널 생성 및 그래프 그리기
class MyPanel extends JPanel {
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.BLACK);
g.drawString("2019.10", (int) (panelX * (0.2)), (int) (panelY * (0.9)));
g.drawString("2019.11", (int) (panelX * (0.4)), (int) (panelY * (0.9)));
g.drawString("2019.12", (int) (panelX * (0.6)), (int) (panelY * (0.9)));
g.setColor(Color.BLACK);
g.drawString(Integer.toString(aa), (int) (panelX * (0.2)) + 10, (int) (panelY * (0.8) - a) - 10);
g.drawString(Integer.toString(bb), (int) (panelX * (0.4)) + 10, (int) (panelY * (0.8) - b) - 10);
g.drawString(Integer.toString(cc), (int) (panelX * (0.6)) + 10, (int) (panelY * (0.8) - c) - 10);
g.setColor(Color.BLUE);
g.fillRect((int) (panelX * (0.2)), (int) (panelY * (0.8) - a), 50, a);
g.fillRect((int) (panelX * (0.4)), (int) (panelY * (0.8) - b), 50, b);
g.fillRect((int) (panelX * (0.6)), (int) (panelY * (0.8) - c), 50, c);
}
}
// 패널 인스턴스 생성
private MyPanel mp = new MyPanel();
// GUI생성자
public Shrimp() {
setTitle("중국산 뱀장어(앵궐라종) 수입현황");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setContentPane(mp); // 패널을 mp로 교체
mp.setLayout(null); // 레이아웃을 absolute로 교체
setSize(panelX, panelY + 30);
setVisible(true);
}
public static String change(String date) throws Exception {
// 1번 주소 객체 만들기
URL url = new URL("주소 입력해야됨");
// 2번 스트림 연결
HttpURLConnection con = (HttpURLConnection) url.openConnection();
// 3번 버퍼 연결 (문자열)
BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream(), "UTF-8"));
// 4. 문자 더하기
StringBuilder sb = new StringBuilder();
String input = "";
while ((input = br.readLine()) != null) {
sb.append(input);
}
br.close(); // 버퍼 닫기
con.disconnect(); // 스트림 닫기
// XML을 JSON으로 변환 (org.json 이용)
// https://github.com/stleary/JSON-java
org.json.JSONObject jsonOb = XML.toJSONObject(sb.toString());
String jsonString = jsonOb.toString();
// 5. 자바 오브젝트로 변환
Gson gson = new Gson();
Jang jang = gson.fromJson(jsonString, Jang.class);
// 수입량 리턴
return jang.getResponseXml().getBody().getItem().get(0).getImxprtWt();
}
public static void main(String[] args) {
// 3개월간의 수입량을 저장하기위한 어레이리스트
ArrayList<String> amount = new ArrayList<>();
try {
// 월별 수입량을 리스트에 추가
amount.add(change("201910"));
amount.add(change("201911"));
amount.add(change("201912"));
} catch (Exception e) {
e.printStackTrace();
}
// 월별 수입량 중 최대값 구하기
double max = 0;
double test = 0;
for (String string : amount) {
int i = Integer.parseInt(string);
test = i;
if(i > max) {
max = i;
}
}
// 스태틱 변수에 값 넘겨주기
Shrimp.aa = Integer.parseInt(amount.get(0));
Shrimp.bb = Integer.parseInt(amount.get(1));
Shrimp.cc = Integer.parseInt(amount.get(2));
Shrimp.a = (int)(Integer.parseInt(amount.get(0)) / max * 100);
Shrimp.b = (int)(Integer.parseInt(amount.get(1)) / max * 100);
Shrimp.c = (int)(Integer.parseInt(amount.get(2)) / max * 100);
// GUI실행
new Shrimp();
}
}
'Programming Language > Java' 카테고리의 다른 글
자바 StringTokenizer (0) | 2020.04.24 |
---|---|
20200422 // 클래스의 구성, 생성자의 역할, 메서드의 역할, static 메서드를 쓰는 이유, try catch를 쓰는 이유, 드라이버 (0) | 2020.04.22 |
자바 SWING 리스너 (0) | 2020.04.22 |
20200421 (0) | 2020.04.21 |
자바 SWING, WindowBuilder (0) | 2020.04.20 |