자바를 이용하면 우리가 원하는 무언가를 화면에 출력할 수 있다.
나는 오늘 자바로 간단한 데스크탑 앱 만들기를 공부해보았다.
Eclipse에서 HelloWorldGUI 프로젝트를 생성하고 HelloWorldGUIApp.java를 만들었다.
내가 만들 작고 귀여운... 프로그램은 작은 데스크탑 창이 뜨고 그 안에 Hello World!가 나오는 기능을 수행할 것이다.
만든 이클립스 프로젝트에 아래의 코드를 입력한다.
import javax.swing.*;
import java.awt.Dimension;
import java.awt.Toolkit;
public class HelloWorldGUIApp{
public static void main(String[] args){
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
JFrame frame = new JFrame("HelloWorld GUI");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setPreferredSize(new Dimension(800, 300));
JLabel label = new JLabel("Hello World!!", SwingConstants.RIGHT);
frame.getContentPane().add(label);
Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
frame.setLocation(dim.width/2-400/2, dim.height/2-300/2);
frame.pack();
frame.setVisible(true);
}
});
}
}
11번째 줄의 코드가 작은 윈도우에 Hello World!!를 나타내 주는 코드이고, 나머지 부분은 데스크탑 창을 구성하기 위한 부분들이다.
이번에는 코드를 응용하여 왼쪽에다 출력해보도록 하겠다.
코드를 바꿔주면 된다.
import javax.swing.*;
import java.awt.Dimension;
import java.awt.Toolkit;
public class HelloWorldGUIApp{
public static void main(String[] args){
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
JFrame frame = new JFrame("HelloWorld GUI");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setPreferredSize(new Dimension(800, 300));
JLabel label = new JLabel("Hello World!!", SwingConstants.LEFT);
frame.getContentPane().add(label);
Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
frame.setLocation(dim.width/2-400/2, dim.height/2-300/2);
frame.pack();
frame.setVisible(true);
}
});
}
}
11번째 코드에 있는 RIGHT를 LEFT로 바꿔주기만하면 된다. 간단하다!
그러면 아래와 같이..!
코드를 이리 저리 조작해보면 다양하게 데스크탑을 제어할 수 있다.
코딩은 하면서 배우는 거니깐...
사물을 인터넷으로 연결되어 프로그램으로 제어하는 것을 사물인터넷, IoT(Internet of Things)라고 부른다.
나는 오늘 라즈베리파이라는 작은 컴퓨터를 이용하여 자바로 전구의 동작을 제어하는 앱을 살펴보았다.
라즈베리파이는 크기가 작은 교육용 컴퓨터이다. 이름만 들었을 때는 전혀 컴퓨터라는 생각이 안드는데 ㅎㅎ
여러 구성 요소 중 전류를 흐르게 할 수 있는 GPIO(General Purpose Input Output)가 있는데,
각각의 핀들은 프로그램으로 전류의 흐름을 제어할 수 있다.
이를 응용하여 원하는 시간에 화분에 물을 주거나,
원격으로 조명을 켜는 등 세상의 수많은 사물을 기계적이고 자동화된 방법으로 제어할 수 있게 된다.
아래는 Hello World 중 "Hell"부분의 모스부호 대로 LED전구를 점멸하게 하는 앱의 코드이다.
import com.pi4j.io.gpio.GpioController;
import com.pi4j.io.gpio.GpioFactory;
import com.pi4j.io.gpio.GpioPinDigitalOutput;
import com.pi4j.io.gpio.PinState;
import com.pi4j.io.gpio.RaspiPin;
public class HelloWorldRaspberryPi {
public static void main(String[] args) throws InterruptedException {
final GpioController gpio = GpioFactory.getInstance();
final GpioPinDigitalOutput pin = gpio.provisionDigitalOutputPin(RaspiPin.GPIO_01, "PinLED", PinState.LOW);
final int SHORT_INTERVAL = 200;
final int LONG_INTERVAL = SHORT_INTERVAL * 3;
final int LETTER_INTERVAL = SHORT_INTERVAL * 7;
while (true) {
// H
pin.high();
Thread.sleep(SHORT_INTERVAL);
pin.low();
Thread.sleep(SHORT_INTERVAL);
pin.high();
Thread.sleep(SHORT_INTERVAL);
pin.low();
Thread.sleep(SHORT_INTERVAL);
pin.high();
Thread.sleep(SHORT_INTERVAL);
pin.low();
Thread.sleep(SHORT_INTERVAL);
pin.high();
Thread.sleep(SHORT_INTERVAL);
pin.low();
Thread.sleep(LETTER_INTERVAL);
// e
pin.high();
Thread.sleep(SHORT_INTERVAL);
pin.low();
Thread.sleep(LETTER_INTERVAL);
// l
pin.high();
Thread.sleep(SHORT_INTERVAL);
pin.low();
Thread.sleep(SHORT_INTERVAL);
pin.high();
Thread.sleep(LONG_INTERVAL);
pin.low();
Thread.sleep(SHORT_INTERVAL);
pin.high();
Thread.sleep(SHORT_INTERVAL);
pin.low();
Thread.sleep(SHORT_INTERVAL);
pin.high();
Thread.sleep(SHORT_INTERVAL);
pin.low();
Thread.sleep(LONG_INTERVAL);
// l
pin.high();
Thread.sleep(SHORT_INTERVAL);
pin.low();
Thread.sleep(SHORT_INTERVAL);
pin.high();
Thread.sleep(LONG_INTERVAL);
pin.low();
Thread.sleep(SHORT_INTERVAL);
pin.high();
Thread.sleep(SHORT_INTERVAL);
pin.low();
Thread.sleep(SHORT_INTERVAL);
pin.high();
Thread.sleep(SHORT_INTERVAL);
pin.low();
Thread.sleep(LONG_INTERVAL);
}
}
}
라즈베리파이의 커널에서 다음과 같은 명령어를 입력하여 HelloWorldRaspberryPi 앱을 실행하면 전구의 동작이 제어된다.
'공부 STUDY > JAVA' 카테고리의 다른 글
스프링 시작 전, 생활코딩 JAVA 입문 수업 완강 (0) | 2022.12.28 |
---|---|
JAVA | Java 프로그래밍 구성 - 데이터와 문자열 (0) | 2022.06.22 |
이클립스 Eclipse 에러 해결 방법: "The compiler compliance specified is 17 but a JRE 1.8 is used" (0) | 2022.06.22 |
JAVA | Android Studio 안드로이드 애플리케이션 만들기 (0) | 2022.06.20 |
JAVA | Hello Java World, JAVA의 동작원리 (0) | 2022.06.20 |