๐Ÿ“š
TIL
  • README
  • Git
    • Basic
    • Remote Repository
    • Log & Diff
    • Rebase&Cherri-Pick
    • git-flow
  • DevOps
    • Monolithic vs MSA
    • Jenkins ์‹œ์ž‘ํ•˜๊ธฐ
    • Airflow ์‹œ์ž‘ํ•˜๊ธฐ
    • Airflow ์‹œ์ž‘ํ•˜๊ธฐ
    • Build Tools
      • maven
  • ๊ฐœ๋ฐœ ๋ฐฉ๋ฒ•๋ก 
    • TDD
  • Spring
    • IoC
    • Is Spring Bean Thread-Safe?
    • Spring Singleton
    • Component Scan
    • Spring Annotation
    • ์˜์กด ๊ด€๊ณ„ ์ฃผ์ž…(DI)
    • Lombok ํ™œ์šฉํ•˜๊ธฐ
    • Bean ์ƒ๋ช…์ฃผ๊ธฐ์™€ ์ฝœ๋ฐฑ
    • Bean Scope
    • AOP(1) - AOP๋ž€
    • AOP(2) - Aop Proxy
    • AOP(3) - Dynamic Proxy
    • AOP(4) - AspectJ
    • POJO
    • Spring ์„œ๋น„์Šค ๊ตฌ์กฐ
    • Transaction
    • JPA๋ž€?
    • JPA Entity
    • Spring Data JPA
    • Spring Data Specification
    • Model Mapping
    • Cache
    • restTemplate
    • YAML ํŒŒ์ผ ์„ค์ •
    • Spring Boot
      • H2 DB ์„ค์ •
      • ๋‹ค์ค‘ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค์ •
      • Mybatis ์—ฐ๋™ํ•˜๊ธฐ
    • Spring Batch
      • Batch ์‹œ์ž‘ํ•ด๋ณด๊ธฐ
      • Batch Job Flow
      • Job
      • Step
      • Batch Scope & Job Parameter
      • JobRepository์™€ ๋ฉ”ํƒ€ํ…Œ์ด๋ธ”
      • Chunk ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ
      • ItemReader
      • ItemProcessor
      • ItemWriter
      • Batch Schedular
      • Job๋ณ„ Bean๋“ฑ๋กํ•˜๊ธฐ
      • Batch ๊ตฌํ˜„์‹œ ๋ฐœ์ƒํ•œ ์˜ค๋ฅ˜ ์ •๋ฆฌ
      • Spring Batch Scaling
        • Multithread Job๊ตฌํ˜„์‹œ ์ด์Šˆ์‚ฌํ•ญ
    • Spring test
      • Junit5
        • ํ…Œ์ŠคํŠธ ์ด๋ฆ„ ํ‘œ๊ธฐ
        • ํ…Œ์ŠคํŠธ ๊ทธ๋ฃน ์‚ฌ์ด์˜ ๊ด€๊ณ„
        • ํƒœ๊ทธ์™€ ํ•„ํ„ฐ๋ง
        • ๋™์  ํ…Œ์ŠคํŠธ
        • ํ…Œ์ŠคํŠธ LifeCycle
        • ํ…Œ์ŠคํŠธ ๋ฉ”์„œ๋“œ
        • ํ…Œ์ŠคํŠธ ์ˆœ์„œ
        • AssertJ
        • ํ…Œ์ŠคํŠธ ๋ณ‘๋ ฌ ์‹คํ–‰
        • AssertJ
        • Mock
      • Spring Boot Test DB ๋ถ„๋ฆฌ
      • Spring Batch Test
  • Web Application
    • Web Server & WAS
    • ๊ด€๋ จ ๊ฐœ๋… - HTTP API, HTML, CSR, SSR
    • Servlet
    • JSP
    • Cookie And Session
    • ์˜ˆ์™ธํŽ˜์ด์ง€
    • Java Bean
    • JDBC
    • Connection Pool
    • ํŒŒ์ผ ์—…๋กœ๋“œ
    • Expression Language
    • JSTL
    • FrontControllerํŒจํ„ด Command ํŒจํ„ด
    • Forwarding
    • MVC
    • ํšŒ์›๊ฐ€์ž…์˜ˆ์ œ
    • ์ฐธ๊ณ 
      • ๊ฐœ๋ฐœํ™˜๊ฒฝ์„ค์ •
  • Java+
    • SOAP/WSDL vs REST
    • WSDL์„ JAVA๋กœ ๋ณ€ํ™˜ํ•˜๊ธฐ
    • SOAP ํ†ต์‹  OPEN API๋กœ ๊ฐœ๋ฐœํ•ด๋ณด๊ธฐ
  • Java
    • Basic
      • ๋ณ€์ˆ˜์™€ ํƒ€์ž…
      • ์—ฐ์‚ฐ์ž
      • ์กฐ๊ฑด๋ฌธ๊ณผ ๋ฐ˜๋ณต๋ฌธ
      • ์ฐธ์กฐ ํƒ€์ž…
      • ํด๋ž˜์Šค
      • ์ƒ์†(Inheritance)
      • ์ธํ„ฐํŽ˜์ด์Šค(Interface)
      • ์ค‘์ฒฉ ํด๋ž˜์Šค์™€ ์ค‘์ฒฉ ์ธํ„ฐํŽ˜์ด์Šค
      • ์˜ˆ์™ธ ์ฒ˜๋ฆฌ
      • API - Object, System, Class, Math, Wrapper
      • API - String, StringBuffer, StringBuilder
      • Thread
      • Generic
      • Lambda
      • Collection - List, Set
      • Collection - Map
      • Collection - Tree
      • Collection - Stack, Queue
      • Stream
      • Reflection
      • ์ •๊ทœํ‘œํ˜„์‹
      • GUI
      • UML
      • Serializable
    • Advanced
      • OutOfMemoryError
      • AutoValue
      • meta-annotation
        • @Retention
        • @Target
        • @Repeatable
    • Effective Java 3/E
      • ITEM 1: Static Factory Method(์ •์  ๋ฉ”์†Œ๋“œ)
      • ITEM 2: Builder Pattern
      • ITEM 3: Singleton
      • ITEM 4: Private Constructor
      • ITEM 5: Dependency Injection
      • ITEM 6: Avoid Unnecessary Object
      • ITEM 7: Eliminate Object Reference
      • ITEM 8: Avoid finalizer and cleaner
      • ITEM 9: try-with-resources
      • ITEM 10: The gerneral contract when overriding equlas
      • ITEM 11: Overriding hashCode
      • ITEM 12: overriding toString
      • ITEM 13: overriding clone judiciously
      • ITEM 14: Consider implementing comparable
      • ITEM 15: ํด๋ž˜์Šค์™€ ๋ฉค๋ฒ„์˜ ์ ‘๊ทผ์„ ์ตœ์†Œํ™”ํ•ด๋ผ
      • ITEM 16: Use Accessor methods
      • ITEM 17: ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ์„ฑ์„ ์ตœ์†Œํ™”ํ•ด๋ผ(๋ถˆ๋ณ€ ํด๋ž˜์Šค)
      • ITEM 18: ์ƒ์†๋ณด๋‹จ ์ปดํฌ์ง€์…˜์„ ์‚ฌ์šฉํ•ด๋ผ
      • ITEM 19: ์ƒ์†์„ ๊ณ ๋ คํ•ด ์„ค๊ณ„ํ•˜๊ณ  ๋ฌธ์„œํ™”ํ•ด๋ผ
      • ITEM 20: ์ถ”์ƒ ํด๋ž˜์Šค๋ณด๋‹ค ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์šฐ์„ ํ•˜๋ผ
      • ITEM 21: ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๊ตฌํ˜„ํ•˜๋Š” ์ชฝ์„ ์ƒ๊ฐํ•ด ์„ค๊ณ„ํ•ด๋ผ.
      • ITEM 22: ์ธํ„ฐํŽ˜์ด์Šค๋Š” ํƒ€์ž…์„ ์ •์˜ํ•˜๋Š” ์šฉ๋„๋กœ๋งŒ ์‚ฌ์šฉํ•ด๋ผ
      • ITEM 23: ํƒœ๊ทธ ๋‹ฌ๋ฆฐ ํด๋ž˜์Šค๋ณด๋‹ค ํด๋ž˜์Šค ๊ณ„์ธต๊ตฌ์กฐ๋ฅผ ํ™œ์šฉํ•ด๋ผ
      • ITEM 24: ๋ฉค๋ฒ„ ํด๋ž˜์Šค๋Š” ๋˜๋„๋ก static์œผ๋กœ ๊ตฌํ˜„ํ•ด๋ผ
      • ITEM 25: ํ†ฑ๋ ˆ๋ฒจ ํด๋ž˜์Šค๋Š” ํ•œ ํŒŒ์ผ์— ํ•˜๋‚˜๋งŒ ์ƒ์„ฑํ•ด๋ผ.
      • ITEM 26: Raw type์€ ์‚ฌ์šฉํ•˜์ง€ ๋งˆ๋ผ
      • ITEM 27: ๋น„๊ฒ€์‚ฌ ๊ฒฝ๊ณ ๋ฅผ ์ œ๊ฑฐํ•ด๋ผ
      • ITEM 28: ๋ฐฐ์—ด๋ณด๋‹ค๋Š” ๋ฆฌ์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•ด๋ผ
      • ITEM 29: ์ด์™•์ด๋ฉด ์ œ๋„ค๋ฆญ ํƒ€์ž…์œผ๋กœ ๋งŒ๋“ค์–ด๋ผ
      • ITEM 30: ์ด์™•์ด๋ฉด ์ œ๋„ค๋ฆญ ๋ฉ”์„œ๋“œ๋กœ ๋งŒ๋“ค์–ด๋ผ
      • ITEM 31 : ํ•œ์ •์  ์™€์ผ๋“œ์นด๋“œ๋ฅผ ์‚ฌ์šฉํ•ด API ์œ ์—ฐ์„ฑ์„ ๋†’์—ฌ๋ผ
      • ITEM 32: ์ œ๋„ค๋ฆญ๊ณผ ๊ฐ€๋ณ€์ธ์ˆ˜๋ฅผ ํ•จ๊ป˜ ์“ธ ๋•Œ๋Š” ์‹ ์ค‘ํ•ด๋ผ
      • ITEM 33: ํƒ€์ž… ์•ˆ์ „ ์ด์ข… ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๊ณ ๋ คํ•ด๋ผ
      • ITEM 34: int ์ƒ์ˆ˜ ๋Œ€์‹  ์—ด๊ฑฐ ํƒ€์ž…์„ ์‚ฌ์šฉํ•ด๋ผ
      • ITEM 35: ordinal ๋ฉ”์„œ๋“œ ๋Œ€์‹  ์ธ์Šคํ„ด์Šค ํ•„๋“œ๋ฅผ ์‚ฌ์šฉํ•ด๋ผ
      • ITEM 36: ๋น„ํŠธ ํ•„๋“œ ๋Œ€์‹  EnumSet์„ ์‚ฌ์šฉํ•ด๋ผ
      • ITEM 37: ordinal ์ธ๋ฑ์‹ฑ ๋Œ€์‹  EnumMap์„ ์‚ฌ์šฉํ•ด๋ผ
      • TEM 38 : ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋Š” ์—ด๊ฑฐํƒ€์ž…์ด ํ•„์š”ํ•˜๋ฉด ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•ด๋ผ
      • ITEM 39: ๋ช…๋ช… ํŒจํ„ด๋ณด๋‹ค ์• ๋„ˆํ…Œ์ด์…˜์„ ์‚ฌ์šฉํ•ด๋ผ
      • ITEM 40: @Override ์–ด๋…ธํ…Œ์ด์…˜์„ ์ผ๊ด€๋˜๊ฒŒ ์‚ฌ์šฉํ•ด๋ผ
      • ITEM 41: ์ •์˜ํ•˜๋ ค๋Š” ๊ฒƒ์ด ํƒ€์ž…์ด๋ผ๋ฉด ๋งˆ์ปค ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•ด๋ผ
      • ITEM 42: ์ต๋ช… ํด๋ž˜์Šค๋ณด๋‹ค๋Š” ๋žŒ๋‹ค๋ฅผ ์‚ฌ์šฉํ•ด๋ผ
      • ITEM 43: ๋žŒ๋‹ค๋ณด๋‹ค๋Š” ๋ฉ”์„œ๋“œ ์ฐธ์กฐ๋ฅผ ์‚ฌ์šฉํ•ด๋ผ
      • ITEM 44: ํ‘œ์ค€ ํ•จ์ˆ˜ํ˜• ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•ด๋ผ
      • ITEM 45: ์ŠคํŠธ๋ฆผ์€ ์ฃผ์˜ํ•ด์„œ ์‚ฌ์šฉํ•ด๋ผ
      • ITEM 46: ์ŠคํŠธ๋ฆผ์—์„œ ๋ถ€์ž‘์šฉ ์—†๋Š” ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด๋ผ
      • ITEM 47: ๋ฐ˜ํ™˜ ํƒ€์ž…์œผ๋กœ๋Š” ์ŠคํŠธ๋ฆผ๋ณด๋‹ค ์ปฌ๋ ‰์…˜์ด ๋‚ซ๋‹ค.
      • ITEM 48: ์ŠคํŠธ๋ฆผ ๋ณ‘๋ ฌํ™”๋Š” ์ฃผ์˜ํ•ด์„œ ์‚ฌ์šฉํ•ด๋ผ
      • ITEM 49: ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์œ ํšจํ•œ์ง€ ๊ฒ€์‚ฌํ•ด๋ผ
      • ITEM 50: ์ ์‹œ์— ๋ฐฉ์–ด์  ๋ณต์‚ฌ๋ณธ์„ ๋งŒ๋“ค์–ด๋ผ
      • ITEM 51: ๋ฉ”์„œ๋“œ ์‹œ๊ทธ๋‹ˆ์ฒ˜๋ฅผ ์‹ ์ค‘ํžˆ ์„ค๊ณ„ํ•ด๋ผ
      • ITEM 52: ๋‹ค์ค‘์ •์˜๋Š” ์‹ ์ค‘ํžˆ ์‚ฌ์šฉํ•ด๋ผ
      • ITEM 53: ๊ฐ€๋ณ€์ธ์ˆ˜๋Š” ์‹ ์ค‘ํžˆ ์‚ฌ์šฉํ•ด๋ผ
      • ITEM 54: null์ด ์•„๋‹Œ, ๋นˆ ์ปฌ๋ ‰์…˜์ด๋‚˜ ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•ด๋ผ
      • ITEM 55: Optional ๋ฐ˜ํ™˜์€ ์‹ ์ค‘ํ•˜๊ฒŒ ํ•ด๋ผ
      • ITEM 56: ๊ณต๊ฐœ๋œ API ์š”์†Œ์—๋Š” ํ•ญ์ƒ ์ฃผ์„์„ ์ž‘์„ฑํ•ด๋ผ
      • ITEM 57: ์ง€์—ญ๋ณ€์ˆ˜์˜ ๋ฒ”์œ„๋ฅผ ์ตœ์†Œํ™”ํ•ด๋ผ
      • ITEM 58: ์ „ํ†ต์ ์ธ for ๋ฌธ๋ณด๋‹ค๋Š” for-each๋ฌธ์„ ์‚ฌ์šฉํ•ด๋ผ
      • ITEM 59: ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ตํžˆ๊ณ  ์‚ฌ์šฉํ•ด๋ผ
      • ITEM 60: ์ •ํ™•ํ•œ ๋‹ต์ด ํ•„์š”ํ•˜๋‹ค๋ฉด float์™€ double์€ ํ”ผํ•ด๋ผ
      • ITEM 61: ๋ฐ•์‹ฑ๋œ ๊ธฐ๋ณธ ํƒ€์ž…๋ณด๋‹ค๋Š” ๊ธฐ๋ณธ ํƒ€์ž…์„ ์‚ฌ์šฉํ•ด๋ผ
      • ITEM 62: ๋‹ค๋ฅธ ํƒ€์ž…์ด ์ ์ ˆํ•˜๋‹ค๋ฉด ๋ฌธ์ž์—ด ์‚ฌ์šฉ์„ ํ”ผํ•ด๋ผ
      • ITEM 63: ๋ฌธ์ž์—ด ์—ฐ๊ฒฐ์€ ๋А๋ฆฌ๋‹ˆ ์ฃผ์˜ํ•ด๋ผ
      • ITEM 64: ๊ฐ์ฒด๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•ด ์ฐธ์กฐํ•ด๋ผ
      • ITEM 65: ๋ฆฌํ”Œ๋ ‰์…˜๋ณด๋‹ค๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•ด๋ผ
      • ITEM 66: ๋„ค์ดํ‹ฐ๋ธŒ ๋ฉ”์„œ๋“œ๋Š” ์‹ ์ค‘ํžˆ ์‚ฌ์šฉํ•ด๋ผ
      • ITEM 67: ์ตœ์ ํ™”๋Š” ์‹ ์ค‘ํžˆ ํ•ด๋ผ
      • ITEM 68: ์ผ๋ฐ˜์ ์œผ๋กœ ํ†ต์šฉ๋˜๋Š” ๋ช…๋ช… ๊ทœ์น™์„ ๋”ฐ๋ผ๋ผ
    • ๊ฐ์ฒด์ง€ํ–ฅ ์„ค๊ณ„ ์›์น™(SOLID)
    • ๋””์ž์ธํŒจํ„ด
      • Strategy Pattern
      • Template Method Pattern
      • Factory Method Pattern
      • Singleton
      • Delegation
      • Proxy
      • Adapter Pattern
    • ์‹ค์Šต
      • ์ธํ„ฐํŽ˜์ด์Šค ์‹ค์Šต - Vehicle
      • ์ธํ„ฐํŽ˜์ด์Šค ์‹ค์Šต - Remote
      • GUI ์‹ค์Šต - Calculator
      • GUI ์‹ค์Šต - button
      • GUI ์‹ค์Šต - lotto
      • Thread ์‹ค์Šต - ์ขŒ์„์˜ˆ์•ฝ, ๋ฉ”์„ธ์ง€๋ณด๋‚ด๊ธฐ
    • Jar vs War
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
    • KEY
    • Index
    • Transaction
    • Trigger
    • Procedure / Function
    • Package
    • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฐฐ์›€ํ„ฐ
      • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ
      • ๊ด€๊ณ„๋ฐ์ดํ„ฐ ๋ชจ๋ธ
      • ๊ด€๊ณ„๋Œ€์ˆ˜์™€ SQL
    • MySQL
      • Database๋ž€
      • MySQL ์‹œ์ž‘ํ•˜๊ธฐ
      • MySQL Database
      • MySQL Table
      • CRUD
      • ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
      • Server์™€ Client
    • PostgreSQL
    • NoSQL
      • Install Cassandra on mac
      • Cassandra๋ž€?
      • NiFi๋ž€
  • Algorithm
    • String
    • Recursion
    • Dynamic Programming
    • Array, Struct, Pointer
    • Math
    • Sort
    • List
    • Stack
    • Queue
    • Graph
    • Tree
    • Maze
    • AVL
    • ์ด์ง„ํƒ์ƒ‰ํŠธ๋ฆฌ(Binary Search Tree)
    • DFS์™€ BFS
    • ๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜(Dijkstra's Algorithm)
    • Red-Black ํŠธ๋ฆฌ
    • A* ์•Œ๊ณ ๋ฆฌ์ฆ˜
    • Heap
    • Huffman Coding
    • Priority Queue
    • Bellman-Ford ์•Œ๊ณ ๋ฆฌ์ฆ˜
    • C++
      • Class
      • STL
        • STL pair
        • STL Container - Associate Container
        • STL Container - Sequence Container
        • STL Container - Container Adapter
  • JavaScript
    • JABASCRIPT BASIC
    • Shallow Copy vs Deep Copy
    • OBJECT MODEL
    • NODE
    • ๋™๊ธฐ ์ฒ˜๋ฆฌ vs ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ
    • AJAX
    • CALLBACK
    • PROMISE
    • DEFERRER
    • UNDERSCORE
    • WEBPACK
    • SCOPE
    • EXECUTION CONTEXT
    • Image Object
    • BFCache๋ž€?
    • history.scrollRestoration
    • Intersection Observer
    • JWT - JSON Web Token
    • HTML vs JSON
  • Vue.js
    • ํ™˜๊ฒฝ์„ค์ •
    • Vue.js๋ž€?
    • Vue Instance
    • Vue Component
    • Vue Router
    • HTTP ํ†ต์‹ 
    • Template
    • Single File Component
    • Vue Animation
    • Vuex
    • Djnago์™€ ์—ฐ๋™ํ•˜๊ธฐ
  • Backbone.js
    • Model
    • Collection
    • Sync
    • view
  • Node.js
    • Doit! - ๋…ธ๋“œ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๋Œ€ํ‘œ์ ์ธ ์„œ๋ฒ„์™€ ์šฉ๋„
    • Doit! - ๋…ธ๋“œ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ณ  ๊ฐœ๋ฐœ ๋„๊ตฌ ์„ค์น˜ํ•˜๊ธฐ
    • Doit! - ๋…ธ๋“œ ๊ฐ„๋‹จํ•˜๊ฒŒ ์‚ดํŽด๋ณด๊ธฐ
    • Doit! - ๋…ธ๋“œ์˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์™€ ์นœํ•ด์ง€๊ธฐ
    • Doit! - ๋…ธ๋“œ์˜ ๊ธฐ๋ณธ ๊ธฐ๋Šฅ ์•Œ์•„๋ณด๊ธฐ
    • Doit! - ์›น ์„œ๋ฒ„ ๋งŒ๋“ค๊ธฐ
    • Doit! - ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‚ฌ์šฉํ•˜๊ธฐ
    • Doit! - ์ต์Šคํ”„๋ ˆ์Šค ํ”„๋กœ์ ํŠธ๋ฅผ ๋ชจ๋“ˆํ™”ํ•˜๊ธฐ
    • Doit! - ๋ทฐ ํ…œํ”Œ๋ฆฟ ์ ์šฉํ•˜๊ธฐ
    • Doit! - ํŒจ์ŠคํฌํŠธ๋กœ ์‚ฌ์šฉ์ž ์ธ์ฆํ•˜๊ธฐ
    • Doit! - ์ฑ„ํŒ…์„œ๋ฒ„ ๋งŒ๋“ค๊ธฐ
    • Doit! - JSON-RPC ์„œ๋ฒ„ ๋งŒ๋“ค๊ธฐ
  • Python
    • Warning-Could not import the lzma module
    • Pandas
      • Pandas ์ž๋ฃŒ๊ตฌ์กฐ
      • Pandas ๋ฐ์ดํ„ฐ ์ž…์ถœ๋ ฅ
      • DataFrame Data ์‚ดํŽด๋ณด๊ธฐ
      • ์‹œ๊ฐํ™” ๋„๊ตฌ - Matplotlib
  • ML
    • ์ถ”์ฒœ ์‹œ์Šคํ…œ
      • Collaborative Filtering
      • Matrix Factorization
  • Django
    • Basic
      • ํ™˜๊ฒฝ์„ค์ •
      • About Django
      • Start Django Project
      • Secret Key ๊ด€๋ฆฌํ•˜๊ธฐ
      • Settings ๋ถ„๋ฆฌํ•˜๊ธฐ
      • Django App
      • Django View & URL (1)
      • Django Model
        • MySQL ์—ฐ๋™
      • Django Admin
      • Django View & URL (2)
      • Django Template
      • Django Template & View & URL
      • Django Static
      • Django form
    • Advanced
      • Django Generic View
      • Django Automated Testing
      • Django Extenstion Template
      • Django Model Package
      • Django OpenSSL setting
    • REST framework
      • Rest API
      • Serializers
      • ViewSet
    • Error
      • ํ™˜๊ฒฝ์„ค์ • zlib ์˜ค๋ฅ˜๋ฐœ์ƒ
      • ModuleNotFoundError
    • ํŒจํ‚ค์ง€
      • django-debug-toolbar
    • Vue.js ์—ฐ๋™ํ•˜๊ธฐ
  • Ruby
    • variable & input/output
    • ์กฐ๊ฑด๋ฌธ
    • ๋ฐ˜๋ณต๋ฌธ
    • Array & Hash
    • Method
    • Proc&Lamda
    • Class
  • Ruby on Rails
    • Scaffolding
    • Controller
    • Model
    • Model-M:N relation
    • Model Validation
    • ๋ฉ‹์‚ฌ 10์ฃผ์ฐจ ์ˆ˜์—…(Tip)
  • HTML/CSS
    • Udacity - Intro to HTML/CSS
    • Udacity - Responsive Web Design
    • Udacity - Responsive Images
    • HTML Basic
    • CSS Basic
    • HTML5 Sementic Tag
    • HTML ํ…์ŠคํŠธ ๊ด€๋ จ ํƒœ๊ทธ๋“ค
    • HTML5 ๋ฉ€ํ‹ฐ๋ฏธ๋””์–ด
    • HTML ํผ ๊ด€๋ จ ํƒœ๊ทธ๋“ค
    • ํ…์ŠคํŠธ ๊ด€๋ จ ์Šคํƒ€์ผ
    • ์ƒ‰์ƒ๊ณผ ๋ฐฐ๊ฒฝ์„ ์œ„ํ•œ ์Šคํƒ€์ผ
    • ๋ ˆ์ด์•„์›ƒ์„ ์œ„ํ•œ ์Šคํƒ€์ผ
    • CSS ํฌ์ง€์…”๋‹
    • ๋‹ค์žฌ๋‹ค๋Šฅํ•œ CSS3 ์„ ํƒ์ž
    • CSS์™€ ์• ๋‹ˆ๋ฉ”์ด์…˜
    • ๋ฐ˜์‘ํ˜• ์›น์ด๋ž€?
  • OS(์šด์˜์ฒด์ œ)
    • Linux
      • Daemon
      • Cron
      • ํ”„๋กœ์„ธ์Šค ๊ด€๋ จ ๋ช…๋ น์–ด
      • ํ…์ŠคํŠธ ํŒŒ์ผ ๋ช…๋ น์–ด
  • Network
    • ๋„คํŠธ์›Œํฌ ๊ธฐ๋ณธ ๊ฐœ๋…
    • ๋„คํŠธ์›Œํฌ ๊ธฐ๋ณธ ๊ทœ์น™
    • ๋ฌผ๋ฆฌ ๊ณ„์ธต
    • ๋ฐ์ดํ„ฐ ๋งํฌ ๊ณ„์ธต
    • ๋„คํŠธ์›Œํฌ ๊ณ„์ธต
    • ์ „์†ก ๊ณ„์ธต
    • ์‘์šฉ ๊ณ„์ธต
    • ๋„คํŠธ์›Œํฌ ์ „์ฒด ํ๋ฆ„
    • ๋ฌด์„  ๋žœ
  • IT ๊ธฐํƒ€์ง€์‹
    • NAS๋ž€
Powered by GitBook
On this page
  • Java GUI ์ข…๋ฅ˜
  • Container
  • Frame ์ƒ์„ฑ ํ•˜๊ธฐ
  • ๋ฉ”์†Œ๋“œ or ์ƒ์„ฑ์ž
  • Panel
  • Component
  • Component ์ƒ์„ฑํ•˜๊ธฐ
  • ๋ชจ์–‘์„ ์„ค์ •ํ•˜๋Š” ๋ฉ”์†Œ๋“œ
  • Label
  • Button
  • Text Field
  • ์—ฌ๋Ÿฌ๊ฐ€์ง€ Component ์ƒ์„ฑํ•˜๊ธฐ
  • LayoutManager
  • Layout ์„ค์ • ํ˜•์‹
  • Flow Laytout
  • Border Laytout
  • Grid Layout
  • Card Layout
  • ๊ตฌ์ฒด์ ์ธ ์œ„์น˜ ์ •ํ•˜๊ธฐ
  • ๋ณตํ•ฉ์ ์ธ ๋ ˆ์ด์•„์›ƒ ์„ค์ •ํ•˜๊ธฐ
  • ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ
  • ์•ก์…˜ ์ด๋ฒคํŠธ actionPerformed()
  • ์ด๋ฒคํŠธ์˜ ๋ถ„๋ฅ˜
  • Key Event
  • Mouse ์ด๋ฒคํŠธ
  • ์ฐธ์กฐ ํŽ˜์ด์ง€

Was this helpful?

  1. Java
  2. Basic

GUI

Previous์ •๊ทœํ‘œํ˜„์‹NextUML

Last updated 5 years ago

Was this helpful?

GUI ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์€ ํ‚ค๋ณด๋“œ๋ฟ ์•„๋‹ˆ๋ผ ๋งˆ์šฐ์Šค ์‚ฌ์šฉ ์ง€์›, ํ™”๋ คํ•˜๊ณ  ๋‹ค์–‘ํ•œ ํ™”๋ฉด๊ณผ ๋”๋ถˆ์–ด ์‚ฌ์šฉ์ž๊ฐ€ ์ž์œ ๋กญ๊ฒŒ ํ™”๋ฉด ์ž‘๋™ ๊ฐ€๋Šฅํ•˜๋‹ค.

Java GUI ์ข…๋ฅ˜

  • AWT(Abstract Windows Toolkit) : ์šด์˜์ฒด์ œ๊ฐ€ ์ œ๊ณตํ•˜๋Š” ์ž์›์„ ์ด์šฉํ•˜์—ฌ ์ปดํฌ๋„ŒํŠธ ์ƒ์„ฑํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ์šด์˜์ฒด์ œ ๋ณ„๋กœ ๋А๋‚Œ์ด ๋‹ค๋ฅด๋‹ค.

    • java.awt.*

    • Button, Frame, TextField

  • Swing : ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์ž๋ฐ”๋กœ ์ž‘์„ฑ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์–ด๋–ค ํ”Œ๋žซํผ์—์„œ๋„ ์ผ๊ด€๋œ ํ™”๋ฉด์„ ๋ณด์—ฌ์ค„ ์ˆ˜ ์žˆ๋‹ค.

    • javax.swing.*

    • ํ˜•์‹ํ™”๋œ ํ…์ŠคํŠธ ์ž…๋ ฅ์ด๋‚˜ ํŒจ์Šค์›Œ๋“œ ํ•„๋“œ ๋™์ž‘๊ณผ ๊ฐ™์€ ๋ณต์žกํ•œ ๊ธฐ๋Šฅ์ด ์ œ๊ณต๋œ๋‹ค.

  • Java 2D API : ๊ทธ๋ฆผ, ์ด๋ฏธ์ง€, ์• ๋‹ˆ๋ฉ”์ด์…˜ ๊ธฐ๋Šฅ์„ ์ œ๊ณต

  • ๋ฐ์ดํ„ฐ ์ „์†ก : ์ž๋ฅด๊ธฐ, ๋ณต์‚ฌ, ๋ถ™์ด๊ธฐ , Drag and Drop ๋“ฑ ๋ฐ์ดํ„ฐ ์ „์†ก ๊ธฐ๋Šฅ ์ œ๊ณต + undo, redo

Container

์ž๋ฐ”์—์„œ Container๋Š” ์ฐฝ์˜ ์—ญํ• ์„ ํ•œ๋‹ค.

  • ํ•œ ๊ฐœ ์ด์ƒ์˜ Container ์œ„์— Component๋“ค์ด ์˜ฌ๋ ค์งˆ ์˜์—ญ

  • Container๋Š” ์‹ค์ œ๋กœ๋Š” Component๋ณด๋‹ค ์ž‘์€ ๊ฐœ๋…

  • (์˜ˆ) Frame, Window, Panel, Dialog, Applet

  • (์˜ˆ) JFrame, JDialog, JApplet, JPanel, JScrollPane

Frame ์ƒ์„ฑ ํ•˜๊ธฐ

๋ฐฉ๋ฒ•1 : JFrame ๊ฐ์ฒด ์ƒ์„ฑ

import javax.swing.*;

public class FrameTest1 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        JFrame f = new JFrame("Frame Test");
        f.setSize(300,200); //ํฌ๊ธฐ ์ง€์ •
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //swing์—๋งŒ ์กด์žฌํ•œ๋‹ค. x๋ฒ„ํŠผ ํด๋ฆญ์‹œ ์ข…๋ฃŒ
        f.setVisible(true); // Container๋ณด์ด๊ธฐ
    }
}

๋ฐฉ๋ฒ•2 : JFrame ์ƒ์†

import javax.swing.*;

class FrameTest extends JFrame{

    public FrameTest() {
        setSize(300,200);
        //swing์—๋งŒ ์กด์žฌํ•œ๋‹ค. x๋ฒ„ํŠผ ํด๋ฆญ์‹œ ์ข…๋ฃŒ
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setTitle("Practice Frame");
        setVisible(true);
    }

}

public class FrameTest1{
    public static void main(String[] args) {
        FrameTest f = new FrameTest();
    }
}

๋ฉ”์†Œ๋“œ or ์ƒ์„ฑ์ž

์ƒ์„ฑ์ž ๋˜๋Š” ๋ฉ”์†Œ๋“œ

์„ค๋ช…

void add(Component c)

์ง€์ •๋œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ํ”„๋ ˆ์ž„์— ์ถ”๊ฐ€

JMenuBar getJMenuBar()

์ด ํ”„๋ ˆ์ž„์— ๋Œ€ํ•œ ๋ฉ”๋‰ด๋ฅผ ์–ป๋Š”๋‹ค.

void pack()

ํ”„๋ ˆ์ž„์˜ ํฌ๊ธฐ๋ฅผ ์ถ”๊ฐ€๋œ ์ปดํฌ๋„ŒํŠธ๋“ค์˜ ํฌ๊ธฐ์— ๋งž๋„๋ก ์กฐ์ ˆํ•œ๋‹ค.

void remove(Component c)

์ง€์ •๋œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ํ”„๋ ˆ์ž„์—์„œ ์ œ๊ฑฐ

void setDefaultCloseOperation()

์‚ฌ์šฉ์ž๊ฐ€ ํ”„๋ ˆ์ž„์„ ๋‹ซ์„ ๋•Œ ์ˆ˜ํ–‰๋œ๋Š” ๋™์ž‘์„ ์„ค์ •ํ•œ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ JFrame.EXIT_ON_CLOSE ๋กœ ์ง€์ •

void setIconImage(Icon Image)

ํ”„๋ ˆ์ž„์ด ์ตœ์†Œํ™”๋˜์—ˆ์„ ๋•Œ์˜ ์•„์ด์ฝ˜ ์ง€์ •

void setLayout(LayoutManager layout)

ํ”„๋ ˆ์ž„์— ๋†“์ด๋Š” ์ปดํฌ๋„ŒํŠธ๋“ค์„ ๋ฐฐ์น˜ํ•˜๋Š” ๋ฐฐ์น˜ ๊ด€๋ฆฌ์ž ์ง€์ •, ๋””ํดํŠธ๋Š” BorderLayout์ด๋‹ค.

void setLocation(int x, int y)

ํ”„๋ ˆ์ž„์˜ (x,y)์ขŒํ‘œ ์ง€์ •

void setResizeable(boolean value)

ํ”„๋ ˆ์ž„์˜ ํฌ๊ธฐ ๋ณ€๊ฒฝ ํ—ˆ์šฉ ์—ฌ๋ถ€

void setSize(int width, int height)

ํ”„๋ ˆ์ž„์˜ ํฌ๊ธฐ ์„ค์ •

void setMenuBar(JMenuBar menu)

ํ˜„์žฌ ํ”„๋ ˆ์ž„์— ๋ฉ”๋‰ด๋ฐ”๋ฅผ ๋ถ™์ธ๋‹ค.

Panel

Component๋“ค์ด ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ์ปจํ…Œ์ด๋„ˆ์ด๋‹ค.(์ปดํฌ๋„ŒํŠธ๋“ค์„ ๋ถ™์ผ ์ˆ˜ ์žˆ๋Š” ํŒ)

๋ฉ”์†Œ๋“œ & ์ƒ์„ฑ์ž

์ƒ์„ฑ์ž or ๋ฉ”์†Œ๋“œ

์„ค๋ช…

JPanel()

์ƒˆ๋กœ์šด Panel ์ƒ์„ฑ

JPanel(boolean isDoubleBuffered)

๋งŒ์•ฝ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์ฐธ์ด๋ฉด ๋”๋ธ” ๋ฒ„ํผ๋ง ์‚ฌ์šฉ

JPanel(LayoutManager layout)

์ง€์ •๋œ ๋ฐฐ์น˜ ๊ด€๋ฆฌ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋Š” Panel ์ƒ์„ฑ

void add(Component c)

์ง€์ •๋œ ์ปดํฌ๋„ŒํŠธ Panel์— ์ถ”๊ฐ€

void remove(Component c)

์ง€์ •๋œ ์ปดํฌ๋„ŒํŠธ Panel์— ์ œ๊ฑฐ

void setLaytout(LayoutManager layout)

๋ฐฐ์น˜ ๊ด€๋ฆฌ์ž๋ฅผ ์ง€์ •ํ•œ๋‹ค. ๋””ํดํŠธ๋Š” FlowLayout์ด๋‹ค.

void setSize(int width, int height)

Panel์˜ ํฌ๊ธฐ ์ง€์ •

void setLocation(int x, int y)

Panel์˜ ์œ„์น˜ ์ง€์ •

void setToolTipText(String text)

์‚ฌ์šฉ์ž๊ฐ€ ๋งˆ์šฐ์Šค๋ฅผ Panel์˜ ๋นˆ๊ณณ์— ์˜ฌ๋ ค๋†“์œผ๋ฉด ํŒ์„ ํ‘œ์‹œ

Component

์‹ค์ œ๋กœ Container ์œ„์— ์˜ฌ๋ ค์ ธ์„œ ํ™”๋ฉด ๊ตฌ์„ฑ์„ ๋‹ด๋‹นํ•˜๋Š” ์š”์†Œ๋“ค์ด๋‹ค.

  • (์˜ˆ) Button, TextField, TextArea, List

  • (์˜ˆ) JButton, JTextField, JChoice, JList, JMenu, JCheckbox, JScrollBar,JTextArea, JCanvas

Component ์ƒ์„ฑํ•˜๊ธฐ

import javax.swing.*;

class FrameTest extends JFrame{

    public FrameTest() {
        //๋ฒ„ํŠผ ์ƒ์„ฑ, ์ถ”๊ฐ€
        JButton button  = new JButton("๋ฒ„ํŠผ");
        // Container์œ„์— Component์ถ”๊ฐ€
        this.add(button);
        //
        setSize(300,200);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setTitle("Practice Frame");
        setVisible(true);
    }

}

๋ชจ์–‘์„ ์„ค์ •ํ•˜๋Š” ๋ฉ”์†Œ๋“œ

๋ฉ”์†Œ๋“œ

์„ค๋ช…

void setBorder(Border) Border getBorder()

์ปดํฌ๋„ŒํŠธ์˜ ํ…Œ๋‘๋ฆฌ๋ฅผ ์„ค์ •ํ•˜๊ฑฐ๋‚˜ ๊ฐ€์ ธ์˜จ๋‹ค.

void setBackground(Color) Color getBackground()

์ปดํฌ๋„ŒํŠธ์˜ ๋ฐฐ๊ฒฝ์ƒ‰๋ฅผ ์„ค์ •ํ•˜๊ฑฐ๋‚˜ ๊ฐ€์ ธ์˜จ๋‹ค.

void setForeground(Color) Color getForeground()

์ปดํฌ๋„ŒํŠธ์˜ ์ „๊ฒฝ์ƒ‰๋ฅผ ์„ค์ •ํ•˜๊ฑฐ๋‚˜ ๊ฐ€์ ธ์˜จ๋‹ค.

void setOpaque(boolean) Boolean IsOpaque()

์ปดํฌ๋„ŒํŠธ์˜ ๋ถˆํˆฌ๋ช…์„ ์„ค์ •ํ•˜๊ฑฐ๋‚˜ ๋ถˆํˆฌ๋ช…์ƒํƒœ๋ฅผ ํ™•์ธํ•œ๋‹ค.

void setFont(Font) Font getFont()

์ปดํฌ๋„ŒํŠธ์˜ ๊ธ€๊ผด์„ ์„ค์ •ํ•˜๊ฑฐ๋‚˜ ๊ฐ€์ ธ์˜จ๋‹ค.

void setCursor(Cursor) Cursor getCursor()

์ปดํฌ๋„ŒํŠธ์— ๋งˆ์šฐ์Šค ์ปค์„œ๋ฅผ ๊ฐ€์ ธ๊ฐ”์„ ๋•Œ ๋ณด์ด๋Š” ์ปค์„œ ๋ชจ์–‘์„ ์„ค์ •ํ•˜๊ฑฐ๋‚˜ ๊ฐ€์ ธ์˜จ๋‹ค.

Label

ํŽธ์ง‘์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ํ…์ŠคํŠธ๋ฅผ ํ‘œ์‹œํ•œ๋‹ค.

๋ฉ”์†Œ๋“œ

์„ค๋ช…

String getText()

Label์˜ ํ…์ŠคํŠธ ๋ฐ˜ํ™˜

void setText()

Label์˜ ํ…์ŠคํŠธ ์„ค์ •

void setToolTipText(String text)

์‚ฌ์šฉ์ž๊ฐ€ ๋งˆ์šฐ์Šค๋ฅผ Label์˜ ์œ„์— ์˜ฌ๋ ค๋†“์œผ๋ฉด ํŒ์„ ํ‘œ์‹œ

void setVisible(boolean value)

Label์„ ๋ณด์ด๊ฒŒ ํ•˜๊ฑฐ๋‚˜ ๊ฐ์ถ˜๋‹ค.

Button

์‚ฌ์šฉ์ž๊ฐ€ ํด๋ฆญํ–ˆ์„ ๊ฒฝ์šฐ, ์ด๋ฒคํŠธ๋ฅผ ๋ฐœ์ƒํ•˜์—ฌ ์›ํ•˜๋Š” ๋™์ž‘์„ ํ•˜๊ฒŒ ํ•˜๋Š”๋ฐ ์ด์šฉ๋œ๋‹ค.

๋ฉ”์†Œ๋“œ

์„ค๋ช…

String getText()

๋ฒ„ํŠผ์˜ ํ˜„์žฌ ํ…์ŠคํŠธ ๋ฐ˜ํ™˜

void setText(String text)

๋ฒ„ํŠผ์˜ ํ…์ŠคํŠธ ์„ค์ •

void doClick()

์‚ฌ์šฉ์ž๊ฐ€ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅธ ๊ฒƒ ์ฒ˜๋Ÿผ ์ด๋ฒคํŠธ ๋ฐœ์ƒ

void setBorderPanited(boolean value)

๋ฒ„ํŠผ์˜ ๊ฒฝ๊ณ„๋ฅผ ๋‚˜ํƒ€๋‚ด๊ฑฐ๋‚˜ ๊ฐ์ถ˜๋‹ค.

void setContentAreaFilled(boolean value)

๋ฒ„ํŠผ์˜ ๋ฐฐ๊ฒฝ์„ ์ฑ„์šธ ๊ฒƒ์ธ์ง€ ์ง€์ •

void setEnable(boolean value)

๋ฒ„ํŠผ์„ ํ™œ์„ฑํ™” ํ•˜๊ฑฐ๋‚˜ ๋น„ํ™œ์„ฑํ™”

void setRolloverEnabled(boolean value)

๋งˆ์šฐ์Šค๊ฐ€ ๋ฒ„ํŠผ ์œ„์— ์žˆ์œผ๋ฉด ๊ฒฝ๊ณ„๋ฅผ ์ง„ํ•˜๊ฒŒ ํ•˜๋Š” rollover ํšจ๊ณผ ์„ค์ •

void setToolTipText(String text)

์‚ฌ์šฉ์ž๊ฐ€ ๋งˆ์šฐ์Šค๋ฅผ ๋ฒ„ํŠผ์œ„์— ์˜ฌ๋ ค๋†“์œผ๋ฉด ํŒ์„ ํ‘œ์‹œ

void setVisible(boolean value)

๋ฒ„ํŠผ์„ ๋ณด์ด๊ฒŒ ํ•˜๊ฑฐ๋‚˜ ๊ฐ์ถ˜๋‹ค.

Text Field

์ž…๋ ฅ์ด ๊ฐ€๋Šฅํ•œ ํ•œ์ค„์˜ ํ…์ŠคํŠธ ํ•„๋“œ๋ฅผ ๋งŒ๋“œ๋Š”๋ฐ ์‚ฌ์šฉํ•œ๋‹ค.

์ƒ์„ฑ์ž or ๋ฉ”์†Œ๋“œ

์„ค๋ช…

JTextField()

TextField ์ƒ์„ฑ

JTextField(int columns)

์ง€์ •๋œ ์นธ์ˆ˜๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” TextField ์ƒ์„ฑ

JTextField(String text)

์ง€์ •๋œ ๋ฌธ์ž์—ด๋กœ ์ดˆ๊ธฐํ™”๋œ TextField ์ƒ์„ฑ

String getText()

TextField์— ์ž…๋ ฅ๋œ ๋ฌธ์ž์—ด ๋ฐ˜ํ™˜

void setText(String text)

TextField์— ํ…์ŠคํŠธ ์“ฐ๊ธฐ

void setEditable(boolean) boolean isEditable()

์‚ฌ์šฉ์ž๊ฐ€ ํ…์ŠคํŠธ๋ฅผ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์—†๋Š”์ง€ ์„ค์ •ํ•˜๊ณ  ๋ฐ˜ํ™˜

์—ฌ๋Ÿฌ๊ฐ€์ง€ Component ์ƒ์„ฑํ•˜๊ธฐ

class FrameTest extends JFrame{

    public FrameTest() {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setTitle("Practice Component");
        this.setLayout(new FlowLayout());

        //ํ•œ์ค„์„ ์ž…๋ ฅํ•˜๊ธฐ์œ„ํ•œ ํ…์ŠคํŠธ ํ•„๋“œ + 10์€ ์ดˆ๊ธฐ์—ด ํฌ
        JTextField txt1 = new JTextField(10);
        this.add(txt1);

        // ์—ฌ๋Ÿฌ์ค„ ์ž…๋ ฅํ•˜๊ธฐ ์œ„ํ•œ ํ…์ŠคํŠธ ์˜์—ญ(ํ–‰, ์—ด)
        JTextArea txt2 = new JTextArea(5,10);
        this.add(txt2);
        //textarea ์˜์—ญ์— ์Šคํฌ๋กค๋ฐ” ์ถ”๊ฐ€ 
        this.add(new JScrollPane(txt2));

        //๋น„๋ฐ€๋ฒˆํ˜ธ ํ•„๋“œ 
        JPasswordField txt3 = new JPasswordField(10);
        this.add(txt3);

        setSize(200,200);
        setVisible(true);
    }

}
class FrameTest extends JFrame{

    public FrameTest() {
        ImageIcon img1 = new ImageIcon("~/Downloads/aa.jpg");
        ImageIcon img2 = new ImageIcon("~/Downloads/aa.jpg");

        //๋ฒ„ํŠผ์— ์ด๋ฏธ์ง€์™€ ๋ฌธ์ž๊ฐ€ ๋ชจ๋‘ ๋‚˜ํƒ€๋‚˜๋„๋ก ์„ค์ • 
        JButton btn1 = new JButton("๋ฒ„ํŠผ1",img1);

        //Label์„ ์ด๋ฏธ์ง€ ๋˜๋Š” ๋ฌธ์ž๋กœ ์ƒ์„ฑ 
        JLabel lbl1 = new JLabel("Label ์ž…๋‹ˆ๋‹ค.");
        JLabel lbl2 = new JLabel(img2);

        //์ฒดํฌ๋ฐ•์Šค 3๊ฐœ ์ƒ์„ฑ + true๊ฐ€ ๋œ๊ณณ์€ ์ฒดํฌ๊ฐ€ ๋˜๋„๋ก ์„ค์ • 
        JCheckBox chk1 = new JCheckBox("C++");
        JCheckBox chk2 = new JCheckBox("Ruby");
        JCheckBox chk3 = new JCheckBox("Java",true);

        //๋‹จ์ผ์„ ํƒ ์ฒดํฌ๋ฐ•์Šค
        JCheckboxGroup group = new JCheckboxGroup();
        JCheckbox man = new JCheckbox("๋‚จ์ž" , true, group);
        JCheckbox woman = new JCheckbox("์—ฌ์ž" , false, group);

        JRadioButton rdo1 = new JRadioButton("๊ณ ๋ž˜ ");
        JRadioButton rdo2 = new JRadioButton("์ƒ์–ด  ");
        JRadioButton rdo3 = new JRadioButton("์ƒˆ์šฐ  ");

    }

}

LayoutManager

Container ์œ„์— Component๋“ค์„ ์˜ฌ๋ฆด ๋•Œ ์ž๋ฆฌ ๋ฐฐ์น˜ ๋ฐฉ๋ฒ•

  • (์˜ˆ) FlowLayout, BorderLayout , GridLayout , CardLayout , GridBackLayout ...

Layout ์„ค์ • ํ˜•์‹

Container.setLayout(new ๋ ˆ์ด์•„์›ƒ์ข…๋ฅ˜());

Flow Laytout

๊ธฐ๋ณธ์ ์œผ๋กœ component๋“ค์ด ์™ผ์ชฝ์—์„œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ถ”๊ฐ€๋˜๋Š” ํ˜•ํƒœ์ด๋‹ค.

Container์˜ ํฌ๊ธฐ๊ฐ€ ๋ณ€ํ•˜๋ฉด component์˜ ํฌ๊ธฐ๋Š” ๊ทธ๋Œ€๋กœ ์ด๋ฉฐ, ์œ„์น˜๊ฐ€ ๋ณ€๊ฒฝ๋œ๋‹ค. ๊ฐ€์šด๋ฐ ์ •๋ ฌ์ด ๊ธฐ๋ณธ์ด๋‹ค.

  • Panel, Applet

import java.awt.FlowLayout;

import javax.swing.*;

class FrameTest extends JFrame{

    public FrameTest() {
        JButton button  = new JButton("๋ฒ„ํŠผ");
        this.add(button);
        setSize(300,200);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setTitle("Practice Frame");
        // FlowLayout์„ค์ •
        setLayout(new FlowLayout());
        setVisible(true);
    }

}

Border Laytout

๊ธฐ๋ณธ์ ์œผ๋กœ ์ปดํฌ๋„ŒํŠธ๋“ค์ด ํ‹€ ํ˜•ํƒœ๋กœ ์กด์žฌํ•œ๋‹ค.

Border Layout์— component๋ฅผ ์ถ”๊ฐ€ํ•  ๋•Œ๋Š” this.add(์ปดํฌ๋„ŒํŠธ, ์œ„์น˜); ๋ฅผ ์ง€์ •ํ•ด์ค˜์•ผํ•œ๋‹ค. ์œ„์น˜๋ฅผ ์ง€์ •ํ•ด์ฃผ์ง€ ์•Š์œผ๋ฉด Default๊ฐ’์€ Center์ด๋‹ค.

import java.awt.BorderLayout;
import java.awt.FlowLayout;

import javax.swing.*;

class FrameTest extends JFrame{

    public FrameTest() {

        JButton button  = new JButton("๋ฒ„ํŠผ");
        this.add(button,BorderLayout.NORTH);
        setSize(300,200);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setTitle("Practice Frame");
        setVisible(true);
    }

}

Grid Layout

ํ…Œ์ด๋ธ” ํ˜•ํƒœ์˜ ๋ ˆ์ด์•„์›ƒ์ด๋‹ค. ์ธ์ˆ˜๋ฅผ ์ฃผ์ง€ ์•Š์œผ๋ฉด ํ–‰์€ 1ํ–‰์œผ๋กœ ๊ณ ์ •๋˜๊ณ  ์—ด์ด ๊ณ„์†ํ•ด์„œ ์ถ”๊ฐ€๋œ๋‹ค.

ํ–‰/์—ด ์ธ์ˆ˜์— 0์ด ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋‹ค.

  • ex) (2,0)์ด๋ฉด ํ–‰์€ 2ํ–‰์œผ๋กœ ๊ณ ์ •, ์—ด์€ ๋ฌดํ•œ๋Œ€

import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.LayoutManager;

import javax.swing.*;

class FrameTest extends JFrame{

    public FrameTest() {

        JButton[] b  = new JButton[6];
        setLayout(new GridLayout(3,2));
        for(int i=0;i<b.length;i++) {
            b[i] = new JButton("button"+i);
            this.add(b[i]);
        }

        setSize(300,300);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setTitle("Practice Frame");
        setVisible(true);
    }

}

Card Layout

๊ตฌ์ฒด์ ์ธ ์œ„์น˜ ์ •ํ•˜๊ธฐ

setLayout์—๋Š” null๋กœ ์ง€์ •ํ•œ ํ›„ setBounds๋กœ ์ง์ ‘์ ์ธ ์ขŒํ‘œ๊ฐ’์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

setLayout(null);
setBounds(0,0,0,0);

๋ณตํ•ฉ์ ์ธ ๋ ˆ์ด์•„์›ƒ ์„ค์ •ํ•˜๊ธฐ

import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.LayoutManager;

import javax.swing.*;

class FrameTest extends JFrame{

    public FrameTest() {

        JPanel pane = new JPanel();
        JButton[] b  = new JButton[4];
        for(int i=0;i<b.length;i++) {
            b[i] = new JButton("button"+i);
        }
        pane.add(b[0]);
        pane.add(b[1]);
        this.add(pane,"North");
        this.add(b[2],"West");
        this.add(b[3],"Center");

        setSize(300,300);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setTitle("Practice Frame");
        setVisible(true);
    }

}

public class FrameTest1{
    public static void main(String[] args) {
        FrameTest f = new FrameTest();
    }
}

์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ

  • ์ด๋ฒคํŠธ(event) : ๋งˆ์šฐ์Šค๋กœ ํด๋ฆญํ•˜๊ฑฐ๋‚˜ ํ‚ค๋ณด๋“œ๋กœ ๋ˆ„๋ฅด๋Š” ์ผ๋ จ์˜ ๋ชจ๋“  ์ž‘๋™

  • ๋ฆฌ์Šค๋„ˆ(Listener) : ์‚ฌ์šฉ์ž๊ฐ€ ๋งˆ์šฐ์Šค๋ฅผ ํด๋ฆญํ•˜๊ฑฐ๋‚˜ ํ‚ค๋ณด๋“œ๋ฅผ ๋ˆ„๋ฅผ ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๊ฒƒ

๋ฒ„ํŠผ์„ ๋ˆ„๋ฅธ๋‹ค -> ์ด๋ฒคํŠธ ๊ฐ์ฒด๊ฐ€ ๋ฐœ์ƒ -> ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ(์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ ๊ฐ์ฒด)

์ฆ‰, ๋ฒ„ํŠผ์— ๋ฐ˜์‘ํ•˜๋ ค๋ฉด ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์•ผํ•œ๋‹ค.

์•ก์…˜ ์ด๋ฒคํŠธ actionPerformed()

  • ์ด๋ฒคํŠธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๋Š” Component(๋ฒ„ํŠผ)๊ฐ€ ์žˆ์–ด์•ผํ•œ๋‹ค.

  • ์ด๋ฒคํŠธ ๋ฐœ์ƒ ๊ฐ์ง€ ๋ฐฉ๋ฒ• : Listener ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋‹ฌ์•„์ค€๋‹ค.

    • ํด๋ž˜์Šค์—์„œ implements ์‹œ์ผœ method๋ฅผ ๊ตฌํ˜„ ๋ฐฉ๋ฒ•

    MyClass implements ActionListener{
        public void actionPerformed(ActionEvent e){
            //๊ผญ ๊ตฌํ˜„ํ•ด์•ผํ•˜๋Š” ๋ฉ”์†Œ๋“œ
            //Action ์ด๋ฒคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์ฝ”๋“œ๊ฐ€ ์—ฌ๊ธฐ์— ๋“ค์–ด๊ฐ„๋‹ค.
        }
    }
    • new๋กœ ์ƒ์„ฑํ•˜์—ฌ Component๋งˆ๋‹ค ๋ฆฌ์Šค๋„ˆ๋ฅผ ๋ถ™์ด๋Š” ๋ฐฉ๋ฒ•

    button1.addActionListener(new ActionListener(){๋ฉ”์†Œ๋“œ ๊ตฌํ˜„..});

Event Listener ์œ„์น˜

  • ๋ณ„๋„์˜ ํด๋ž˜์Šค๋กœ Event Listener๋ฅผ ์ž‘์„ฑ

    • ๋ณ„๋„์˜ ํด๋ž˜์Šค๋ฅผ ๋‘์–ด ์ด๋ฒคํŠธ ๋™์ž‘๋งŒ์„ ์œ„ํ•œ ์ฒ˜๋ฆฌ๋ฅผ ์ž‘์„ฑํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค.

    • ๋ณ„๋„์˜ ํด๋ž˜์Šค์ด๊ธฐ๋•Œ๋ฌธ์— ํด๋ž˜์Šค๊ฐ„ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ์ฒ˜๋ฆฌํ•ด์ฃผ์–ด์•ผํ•œ๋‹ค.

MyClass implements ActionListener{
    public void actionPerformed(ActionEvent e){
        //๊ผญ ๊ตฌํ˜„ํ•ด์•ผํ•˜๋Š” ๋ฉ”์†Œ๋“œ
        //Action ์ด๋ฒคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์ฝ”๋“œ๊ฐ€ ์—ฌ๊ธฐ์— ๋“ค์–ด๊ฐ„๋‹ค.
    }
}
public class MyFrame extends JFrame{
    ...
    public MyFrame(){
        JPanel panel = new JPanel();
        btn= new JButton("๋ฒ„ํŠผ");
        btn.addActionListener(new MyListener());
        panel.add(btn);
        this.add(panel);
        this.setVisible(true);
    }
}
  • ๋‚ด๋ถ€ ํด๋ž˜์Šค๋กœ Event Listener๋ฅผ ์ž‘์„ฑ

    • ์œ„์™€ ๊ฐ™์ด ๋ณ„๋„๋กœ ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค๋ฉด MyFrame์•ˆ์˜ ๋ฉค๋ฒ„ ๋ณ€์ˆ˜๋ฅผ ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ๋‚ด๋ถ€ ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค์–ด์ค„ ์ˆ˜ ์žˆ๋‹ค.

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

class MyFrame extends JFrame{
    private JButton btn;

    public MyFrame() {
        this.setSize(300,200);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setTitle("๋‚ด๋ถ€ ํด๋ž˜์Šค ์ด์šฉํ•˜๊ธฐ");

        JPanel panel = new JPanel();
        btn= new JButton("๋ฒ„ํŠผ");
        btn.addActionListener(new MyListener());
        panel.add(btn);
        this.add(panel);
        this.setVisible(true);
    }
    private class MyListener implements ActionListener{
        public void actionPerformed(ActionEvent e) {
            if(e.getSource()==btn) {
                btn.setText("ํด๋ฆญ๋จ");
            }
        }
    }

}

public class TestCS {
    public static void main(String[] args) {
        MyFrame f = new MyFrame();

    }
}
  • ํ”„๋ ˆ์ž„ ํด๋ž˜์Šค๊ฐ€ Event Listener๋ฅผ ๊ตฌํ˜„ํ•˜๋„๋ก ์ž‘์„ฑ

    • public class Simple extends JFrame implements ActionListener{โ€ฆ} ์˜ ํ˜•ํƒœ๋กœ actionPerformed๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

    • ๊ฐ ์ปดํฌ๋„ŒํŠธ๋“ค์ด ๊ณตํ†ต๋œ ๋™์ž‘์„ ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋‹ค์–‘ํ•œ ๋™์ž‘์„ ํ• ๋Œ€๋Š”, ๊ฐ ์ปดํฌ๋„ŒํŠธ์—์„œ Event Listener๋ฃฐ ๊ตฌํ˜„ํ•˜๋„๋กํ•œ๋‹ค.

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

class MyFrame extends JFrame implements ActionListener{
    private JButton btn;

    public MyFrame() {
        this.setSize(300,200);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JPanel panel = new JPanel();
        btn= new JButton("๋ฒ„ํŠผ");
        btn.addActionListener(this);
        panel.add(btn);
        this.add(panel);
        this.setVisible(true);
    }

    public void actionPerformed(ActionEvent e) {
        if(e.getSource()==btn) {
            btn.setText("ํด๋ฆญ๋จ");
        }
        //๋ฒ„ํŠผ์ด ์—ฌ๋Ÿฌ๊ฐœ๋ผ๋ฉด if then else๊ฐ€ ๊ธธ์–ด์ง€๋Š” ํ˜•ํƒœ์ด๋‹ค.
    }
}

public class TestCS {
    public static void main(String[] args) {
        MyFrame f = new MyFrame();

    }
}
  • ๊ฐ ์ปดํฌ๋„ŒํŠธ๋“ค์ด Event Listener๋ฅผ ๊ตฌํ˜„ํ•˜๋„๋ก ์ž‘์„ฑ

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

class MyFrame extends JFrame implements ActionListener{
    private JButton btn;

    public MyFrame() {
        this.setSize(300,200);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JPanel panel = new JPanel();
        btn= new JButton("๋ฒ„ํŠผ");
        btn.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                if(e.getSource()==btn) {
                    btn.setText("ํด๋ฆญ๋จ");
                }
            }
        });
        panel.add(btn);
        this.add(panel);
        this.setVisible(true);
    }
}

public class TestCS {
    public static void main(String[] args) {
        MyFrame f = new MyFrame();

    }
}

์ด๋ฒคํŠธ์˜ ๋ถ„๋ฅ˜

๋ชจ๋“  Component๊ฐ€ ์ง€์›ํ•˜๋Š” ์ด๋ฒคํŠธ

์ด๋ฒคํŠธ ์ข…๋ฅ˜

์„ค๋ช…

Component

์ปดํฌ๋„ŒํŠธ์˜ ํฌ๊ธฐ๋‚˜ ์œ„์น˜๊ฐ€ ๋ณ€๊ฒฝ๋˜์—ˆ์„ ๊ฒฝ์šฐ ๋ฐœ์ƒ

Focus

ํ‚ค๋ณด๋“œ ์ž…๋ ฅ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ์ƒํƒœ ๋˜๋Š” ๊ทธ ๋ฐ˜๋Œ€์˜ ๊ฒฝ์šฐ ๋ฐœ์ƒ

Container

์ปดํฌ๋„ŒํŠธ๊ฐ€ ์ปจํ…Œ์ด๋„ˆ์— ์ถ”๊ฐ€๋˜๊ฑฐ๋‚˜ ์‚ญ์ œ๋  ๋•Œ ๋ฐœ์ƒ

Key

์‚ฌ์šฉ์ž๊ฐ€ ํ‚ค๋ฅผ ๋ˆŒ๋ €์„ ๋•Œ ํ‚ค๋ณด๋“œ Focus๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฐ์ฒด์—์„œ ๋ฐœ์ƒ

Mouse

๋งˆ์šฐ์Šค ๋ฒ„ํŠผ์ด ํด๋ฆญ๋˜๊ฑฐ๋‚˜ ๋งˆ์šฐ์Šค๊ฐ€ ๊ฐ์ฒด์˜ ์˜์—ญ์œผ๋กœ ๋“ค์–ด์˜ค๊ฐ€๋‚˜ ๋‚˜์˜ฌ๋•Œ ๋ฐœ์ƒ

MouseMotion

๋งˆ์šฐ์Šค๊ฐ€ ์›€์ง์˜€์„ ๋•Œ ๋ฐœ์ƒ

MouseWheel

์ปดํฌ๋„ŒํŠธ ์œ„์—์„œ ๋งˆ์šฐ์Šค ํœ ์„ ์›€์ง์ด๋Š” ๊ฒฝ์šฐ ๋ฐœ์ƒ

Window

์œˆ๋„์šฐ์— ์–ด๋–ค ๋ณ€ํ™”(์—ด๋ฆผ, ๋‹ซํž˜, ์•„์ด์ฝ˜ํ™” ๋“ฑ)๊ฐ€ ์žˆ์„ ๋•Œ ๋ฐœ์ƒ

์ผ๋ถ€ Component๊ฐ€ ์ง€์›ํ•˜๋Š” ์ด๋ฒคํŠธ

์ด๋ฒคํŠธ ์ข…๋ฅ˜

์„ค๋ช…

Action

์‚ฌ์šฉ์ž๊ฐ€ ์–ด๋–ค ๋™์ž‘์„ ํ•˜๋Š” ๊ฒฝ์šฐ ๋ฐœ์ƒ

Caret

ํ…์ŠคํŠธ ์‚ฝ์ž…์ ์ด ์ด๋™ํ•˜๊ฑฐ๋‚˜ ํ…์ŠคํŠธ ์„ ํƒ์ด ๋ณ€๊ฒฝ๋˜์—ˆ์„ ๊ฒฝ์šฐ ๋ฐœ์ƒ

Change

์ผ๋ฐ˜์ ์œผ๋กœ ๊ฐ์ฒด์˜ ์ƒํƒœ๊ฐ€ ๋ณ€๊ฒฝ๋˜์—ˆ์„ ๊ฒฝ์šฐ ๋ฐœ์ƒ

Document

๋ฌธ์„œ์˜ ์ƒํƒœ๊ฐ€ ๋ณ€๊ฒฝ๋˜๋Š” ๊ฒฝ์šฐ ๋ฐœ์ƒ

Item

์„ ํƒ ๊ฐ€๋Šฅํ•œ ์ปดํฌ๋„ŒํŠธ์—์„œ ์‚ฌ์šฉ์ž๊ฐ€ ์„ ํƒํ•œ ๊ฒฝ์šฐ ๋ฐœ์ƒ

ListSelection

๋ฆฌ์ŠคํŠธ๋‚˜ ํ…Œ์ด๋ธ”์—์„œ ์„ ํƒ ๋ถ€๋ถ„์ด ๋ณ€๊ฒฝ๋œ ๊ฒฝ์šฐ ๋ฐœ์ƒ

Action Event

  • ์‚ฌ์šฉ์ž๊ฐ€ ๋ฒ„ํŠผ ํด๋ฆญํ•˜๋Š” ๊ฒฝ์šฐ

  • ์‚ฌ์šฉ์ž๊ฐ€ ๋ฉ”๋‰ด ํ•ญ๋ชฉ์„ ์„ ํƒํ•˜๋Š” ๊ฒฝ์šฐ

  • ์‚ฌ์šฉ์ž๊ฐ€ ํ…์ŠคํŠธ ํ•„๋“œ์—์„œ ์—”ํ„ฐํ‚ค๋ฅผ ๋ˆ„๋ฅด๋Š” ๊ฒฝ์šฐ

import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

class MyFrame extends JFrame{
    private JButton btnYellow,btnPink;
    private JPanel panel;

    public MyFrame() {
        this.setSize(300,200);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        panel = new JPanel();
        btnYellow= new JButton("Yellow");
        btnYellow.addActionListener(new MyListener());
        panel.add(btnYellow);
        btnPink= new JButton("Pink");
        btnPink.addActionListener(new MyListener());
        panel.add(btnPink);


        this.add(panel);
        this.setVisible(true);

    }
    private class MyListener implements ActionListener{
        public void actionPerformed(ActionEvent e) {
            if(e.getSource()==btnYellow) {
                panel.setBackground(Color.YELLOW);;
            }else if(e.getSource()==btnPink) {
                panel.setBackground(Color.PINK);;
            }
        }
    }
}

public class TestCS {
    public static void main(String[] args) {
        MyFrame f = new MyFrame();

    }
}
  • getSource() ๋ฉ”์†Œ๋“œ๋ฅผ ์ด์šฉํ•ด ์ด๋ฒคํŠธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚จ ๊ฐ์ฒด๋ฅผ ์‹๋ณ„ํ•œ๋‹ค.

  • getId() ๋ฉ”์†Œ๋“œ๋ฅผ ์ด์šฉํ•ด ์ด๋ฒคํŠธ์˜ ํƒ€์ž…์„ ์‹๋ณ„ํ•œ๋‹ค.

  • getActionCommand() ๋ฉ”์†Œ๋“œ๋ฅผ ์ด์šฉํ•ด ์ด๋ฒคํŠธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚จ ์ปดํฌ๋„ŒํŠธ์˜ ์ด๋ฆ„์„ ์‹๋ณ„ํ•œ๋‹ค.

Key Event

keyListener ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•œ๋‹ค.

๋ฉ”์†Œ๋“œ

์„ค ๋ช…

keyTyped(KeyEvent e)

์‚ฌ์šฉ์ž๊ฐ€ ๊ธ€์ž๋ฅผ ์ž…๋ ฅํ–ˆ์„ ๊ฒฝ์šฐ์— ํ˜ธ์ถœ

keyPressed(KeyEvent e)

์‚ฌ์šฉ์ž๊ฐ€ ํ‚ค๋ฅผ ๋ˆŒ๋ €์„ ๊ฒฝ์šฐ์— ํ˜ธ์ถœ

keyReleased(KeyEvent e)

์‚ฌ์šฉ์ž๊ฐ€ ํ‚ค์—์„œ ์†์„ ๋–ผ์—ˆ์„ ๊ฒฝ์šฐ์— ํ˜ธ์ถœ

import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class KeyEventPractice extends JFrame implements KeyListener{

    public KeyEventPractice() {

        this.setSize(300,300);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JTextField tf = new JTextField(20);
        tf.addKeyListener(this);
        this.add(tf);
        this.setVisible(true);

    }

    @Override
    public void keyTyped(KeyEvent e) {
        // TODO Auto-generated method stub
        display(e, "key typed");
    }


    @Override
    public void keyPressed(KeyEvent e) {
        display(e, "key pressed");
        // TODO Auto-generated method stub

    }

    @Override
    public void keyReleased(KeyEvent e) {
        // TODO Auto-generated method stub
        display(e, "key Released");
    }
    private void display(KeyEvent e, String string) {
        // TODO Auto-generated method stub
         char c = e.getKeyChar();
         int keyCode = e.getKeyCode();
         String modifiers = e.isAltDown() + " " + e.isControlDown() + " " +e.isShiftDown();
         System.out.println(string + " " + c + " " + keyCode + " " + modifiers);

    }    
}

Mouse ์ด๋ฒคํŠธ

๋ฉ”์†Œ๋“œ

์„ค ๋ช…

mouseClicked(MouseEvent e)

์‚ฌ์šฉ์ž๊ฐ€ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋งˆ์šฐ์Šค๋กœ ํด๋ฆญํ•œ ๊ฒฝ์šฐ์— ํ˜ธ์ถœ๋œ๋‹ค.

mouseEntered(MouseEvent e)

๋งˆ์šฐ์Šค ์ปค์„œ๊ฐ€ ์ปดํฌ๋„ŒํŠธ์˜ ๊ฒฝ๊ณ„์•ˆ์œผ๋กœ ์ปค์„œ๊ฐ€ ๋“ค์–ด๊ฐ€๋ฉด ํ˜ธ์ถœ๋œ๋‹ค.

mouseExited(MouseEvent e)

๋งˆ์šฐ์Šค ์ปค์„œ๊ฐ€ ์ปดํฌ๋„ŒํŠธ์˜ ๊ฒฝ๊ณ„๋ฐ–์œผ๋กœ ์ปค์„œ๊ฐ€ ๋‚˜๊ฐ€๋ฉด ํ˜ธ์ถœ๋œ๋‹ค.

mousePressed(MouseEvent e)

๋งˆ์šฐ์Šค๊ฐ€ ์ปดํฌ๋„ŒํŠธ์œ„์—์„œ ๋ˆŒ๋ ค์ง€๋ฉด ํ˜ธ์ถœ๋œ๋‹ค.

mouseReleased(MouseEvent e)

๋งˆ์šฐ์Šค๊ฐ€ ์ปดํฌ๋„ŒํŠธ์œ„์—์„œ ๋–ผ์–ด์ง€๋ฉด ํ˜ธ์ถœ๋œ๋‹ค.

import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class MouseEventPractice extends JFrame implements MouseListener{
    MouseEventPractice(){
        this.setSize(300,300);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JPanel panel = new JPanel();
        panel.addMouseListener(this);  
        add(panel);
        setVisible(true);

    }
    @Override
    public void mouseClicked(MouseEvent e) {
        // TODO Auto-generated method stub
        display("Mouse clicked (# of clicks: " + e.getClickCount() + ")", e);
    }

    @Override
    public void mousePressed(MouseEvent e) {
        // TODO Auto-generated method stub
        display("Mouse pressed (# of clicks: " + e.getClickCount() + ")", e);
    }

    @Override
    public void mouseReleased(MouseEvent e) {
        // TODO Auto-generated method stub
        display("Mouse released (# of clicks: " + e.getClickCount() + ")", e);
    }

    @Override
    public void mouseEntered(MouseEvent e) {
        // TODO Auto-generated method stub
        display("Mouse entered", e);
    }

    @Override
    public void mouseExited(MouseEvent e) {
        // TODO Auto-generated method stub
        display("Mouse exited", e);
    }

    protected void display(String s, MouseEvent e) {
        System.out.println(s + " X=" + e.getX() + " Y=" + e.getY());
  }
}

Mouse์˜ ์ขŒํ‘œ ์–ป๊ธฐ

๋ฉ”์†Œ๋“œ

์„ค๋ช…

int getClickCount()

๋น ๋ฅธ ์—ฐ์†์ ์ธ ํด๋ฆญ์˜ ํšŸ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด 2์ด๋ฉด ๋”๋ธ” ํด๋ฆญ์„ ์˜๋ฏธํ•œ๋‹ค.

int getX() int getY() Point getPoint()

์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋‹น์‹œ์˜ (x,y) ์œ„์น˜๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์œ„์น˜๋Š” ์ปดํฌ๋„ŒํŠธ์— ์ƒ๋Œ€์ ์ด๋‹ค.

int getXOnScreen() int getYOnScreen() int getLocationOnScreen()

์ ˆ๋Œ€ ์ขŒํ‘œ ๊ฐ’ (x,y)์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์ด๋“ค ์ขŒํ‘œ๊ฐ’์€ ๊ฐ€์ƒ ํ™”๋ฉด์— ์ƒ๋Œ€์ ์ด๋‹ค.

int getButton()

์–ด๋–ค ๋งˆ์šฐ์Šค ๋ฒ„ํŠผ์˜ ์ƒํƒœ๊ฐ€ ๋ณ€๊ฒฝ๋˜์—ˆ๋Š”์ง€๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. NOBUTTON, BUTTON1, BUTTON2, BUTTON3 ์ค‘์˜ ํ•˜๋‚˜์ด๋‹ค.

boolean isPopupTrigger()

๋งˆ์šฐ์Šค ์ด๋ฒคํŠธ๊ฐ€ ํŒ์—… ๋ฉ”๋‰ด๋ฅผ ๋‚˜ํƒ€๋‚˜๊ฒŒ ํ•˜๋ฉด true๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

String getMouseModifiersText(int)

์ด๋ฒคํŠธ ๋„์ค‘์˜ ์ˆ˜์‹ํ‚ค์™€ ๋งˆ์šฐ์Šค ๋ฒ„ํŠผ์„ ๊ธฐ์ˆ ํ•˜๋Š” ์„ค๋ช…๋ฌธ์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

์ฐธ์กฐ ํŽ˜์ด์ง€

border Layoutรฌย—ย รซยŒย€รญย•ยœ รฌยยดรซยฏยธรฌยงย€ รชยฒย€รฌยƒย‰รชยฒยฐรชยณยผ
card Layoutรฌย—ย รซยŒย€รญย•ยœ รฌยยดรซยฏยธรฌยงย€ รชยฒย€รฌยƒย‰รชยฒยฐรชยณยผ

http://programmingsummaries.tistory.com/61