목록프로그래밍 코드 (11)
쨍쨍
[ activity_main.xml ] [ EnterActivity ]package com.example.dodami;import android.content.Intent;import android.os.Bundle;import android.widget.Button;import androidx.appcompat.app.AppCompatActivity;public class EnterActivity extends AppCompatActivity { private Button startButton; @Override protected void onCreate(Bundle savedInstanceState) { super..
[ activity_register ] [RegisterActivity] import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.EditText; import android.widget.RadioButton; import android.widget.RadioGroup; import android.widget.Spinner; import com.andr..
[ activitiy_login ] //#1 [ LoginActivitiy ] import android.content.Intent; import android.os.Bundle; import android.widget.TextView; import android.view.View; import androidx.appcompat.app.AppCompatActivity; public class LoginActivity extends AppCompatActivity { // LoginActivity 클래스를 AppCompatActivity 클래스에서 상속 protected void onCreate(Bundle savedInstanceState) { // onCreate 메소드를 재정의 super.onCrea..
인텔리제이와 MySQL를 연동하는 방법 연동하는 이유는 따로 MySQL을 키지 않더라도 인텔리제이에서 데이터베이스를 확인할 수 있다 인텔리제이 화면 가장 오른 쪽에 데이터베이스 → 새로 작성 → 데이터 소스 → MySQL (인텔리제이 유로버전이아닌 무료 버전인 Community Edition을 사용한다면 오른쪽에 데이터베이스가 나타나지 않는다.) 자신의 아이디, 비밀번호, 호스트와 포트를 입력한 뒤 확인이 아닌 연결 테스트를 누른다. 성공적으로 연결됐다 만든 채팅 프로그램을 실행한 뒤 사용자의 이름을 "yun"으로 설정하면 데이터베이스에도 "yun"에 데이터가 올라간다. 사용자가 메세지를 전송한다면 사용자의 닉네임과 함께 전송한 메세지가 데이터베이스에 저장된다. 아래의 코드는 기존의 코드에서..
표준입력장치 ( 입력 관련 ) Java 표준 출력 장치 ( 출력 관련 ) System.in Scanner BufferedReader System.out System.err 파일 ( 파일 입력 관련 ) Java 파일 ( 파일 출력 관련 ) FileInputStream BufferedReader FileReader FileOutputStream BufferedWriter FileWriter 스트림 └ 데이터를 송수신하기 위한 통로의 개념으로서 입력 혹은 출력, 한쪽 방향으로만 진행. 즉, 연결통로이다. 스트림은 바이트 스트림과 문자 스트림으로 나뉜다. 바이트 스트림은 1바이트 단위로 처리하고, 문자 스트림은 2바이트 단위로 처리한다. 바이트스트림 문자스트림 FileInputStream FileOutputSt..
클릭 이벤트를 사용하는 방법 ① 익명클래스 생성 ) 쉽게 말하자면 익명 클래스 생성으로 리스너를 구현하여 등록하는 방법이다. 방법 public void InitializeView() { btnred = (Button)findViewById(R.id.btn1); btnblue = (Button)findViewById(R.id.btn2); btngreen = (Button)findViewById(R.id.btn3); textView = (TextView)findViewById(R.id.textView); } InitializeView()코드를 사용해 각 뷰 위젯의 참조를 얻어온 후 public void SetListener() { btnred.setOnClickListener(new View.OnClickL..
뷰 바인딩(View Binding) 쉽게 말해 findViewById를 통해 하나하나 뷰를 찾지 않고, 뷰와 상호작용하는 코드를 쉽게 작성할 수 있다. findViewById findViewById를 사용하면 되는데 굳이 ViewBinding을 사용해야할까? 뷰 바인딩을 사용하지 않았을 때는 findViewById를 사용해 레이아웃에서 생성한 위젯(버튼, 텍스트 등)을 메인코드에서 하나하나 findViewById()을 사용해 선언해줘야한다. 위 사진에서는 findViewById로 선언해줘도 복잡하지 않은데 findViewById를 써도 되지 않을까? 라고 생각할 수 있지만 지금은 위젯이 3개이기 때문에 findViewById로 선언해줘도 코드가 길어지고 복잡해지지 않는 것이다. 만약, 위젯이 100개라면..
레이아웃 이름 설명 제약 레이아웃 제약 조건을 사용해 화면을 구성하는 방법으로 안드로이드 스튜디오에서 자동으로 설정하는 디폴트 레이아웃 리니어 레이아웃 창고 안에 박스를 쌓을 때 아래에서 위로 쌓는 것 처럼 뷰가 차지하는 영역을 박스라고 보고 한 쪽 방향으로 차례대로 뷰를 추가하여 화면을 구성하는 방법으로 뷰가 차지할 수 있는 사각형 영역을 할당 상대 레이아웃 부모 컨테이너나 다른 뷰와의 상대적 위치로 화면을 구성하는 방법이지만 제약 레이아웃을 사용하게 되면서 상대 레이아웃은 권장하지 않음 프레임 레이아웃 가장 상위에 있는 하나의 뷰 또는 뷰그룹만 보여주는 방법으로 여러개의 뷰가 들어가면 중첩하여 쌓게 됨 가장 단순하지만 여러 개의 뷰를 중첩한 후 각 뷰를 전환하여 보여주는 방식으로 자주 사용 테이블 레..
[ 서버 ] main.java import java.io.IOException; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; import java.util.ArrayList; public class Main { public static ArrayList OutputList; public static void main(String[] args) { OutputList = new ArrayList(); System.out.println("서버가 시작되었습니다. 클라이언트의 연결 요청을 기다리고 있습니다..."); try { ServerSocket serversocket = new ServerSocket(80..