การส่งข้อความ Unicode ไปยังตำแหน่งเคอร์เซอร์ใน Java

ในด้านภาษาศาสตร์และการออกเสียง ฉันมักจะต้องใช้สัญลักษณ์การออกเสียงแบบพิเศษ แม้ว่าฉันจะใช้รูปแบบแป้นพิมพ์พิเศษที่ช่วยให้ฉันสามารถเขียนอักขระบางตัวด้วยการพิมพ์ได้ แต่การกดคีย์ผสมมักจะมีความซับซ้อนและซ้ำซ้อนมาก ดังนั้นฉันจึงอยากสร้างแอปเล็กๆ ที่จะมีปุ่มบางปุ่ม บางที แต่ละตัวสามารถส่งสัญลักษณ์ (การออกเสียง) ที่ระบุไปยังตำแหน่งเคอร์เซอร์ปัจจุบันไม่ว่าหน้าต่างใดบนหน้าจอจะอยู่ในโฟกัสก็ตาม

มีอะไรประเภทนี้ที่สามารถทำได้ใน Java หรือไม่?

ฉันเคยเห็นวิธีแก้ปัญหาที่คัดลอกค่าลงในคลิปบอร์ดแล้ววาง (Java paste ไปที่ ตำแหน่งเคอร์เซอร์ปัจจุบัน) แต่นั่นไม่ใช่วิธีที่สะอาดนักใช่ไหม มีวิธีใดที่ดีกว่าการวางอักขระผ่าน ctrl+V หรือไม่

ขอบคุณมากสำหรับความช่วยเหลือหรือคำแนะนำล่วงหน้า!

P.


person petusek79    schedule 29.11.2013    source แหล่งที่มา
comment
ปัญหาคือเมื่อคุณคลิกปุ่ม เคอร์เซอร์ปัจจุบันซึ่งน่าจะอยู่ในแอปพลิเคชันอื่นจะสูญเสียโฟกัส   -  person Robin Green    schedule 30.11.2013


คำตอบ (1)


คุณสามารถใช้ AWT Robot เพื่อสร้างคีย์ งานแถลงข่าว สิ่งนี้ไม่ได้ให้ความสามารถในการแทรกอักขระ Unicode ที่กำหนดเองได้ แต่คุณสามารถรวมเข้ากับเทคนิคที่คุณอธิบายไว้แล้ว: ถ่ายโอนอักขระ Unicode ไปยังคลิปบอร์ดและสร้างเหตุการณ์คีย์ CTRL+V ในภายหลัง คุณสามารถลองบันทึกและกู้คืนเนื้อหาคลิปบอร์ดดั้งเดิมได้ แต่จะใช้ได้กับประเภทที่ Java รองรับเท่านั้น

ปัญหาโฟกัสที่กล่าวถึงในความคิดเห็นสามารถแก้ไขได้โดยการตั้งค่าหน้าต่างไม่ให้รับโฟกัสผ่าน Window.setFocusableWindowState พร้อมด้วยอาร์กิวเมนต์ false

อีกทางเลือกหนึ่งคือการจัดเตรียมข้อความ Unicode ผ่านการลากและวาง แอปพลิเคชันส่วนใหญ่รองรับการวางข้อความในช่องป้อนข้อมูล รหัสสำหรับการส่งออกข้อความจะคล้ายกันมาก เนื่องจากทั้งคลิปบอร์ดและ d&d ใช้อินเทอร์เฟซเดียวกันใน Java

person Holger    schedule 29.11.2013
comment
ขอบคุณโฮลเกอร์ วิธีแก้ปัญหาชั่วคราวก็ต้องเพียงพอแล้ว เนื่องจากฉันสนใจที่จะสร้างบางอย่างเช่น Ergonis PopChar ( ปรับให้เหมาะกับความต้องการของนักภาษาศาสตร์ได้ดีขึ้นเท่านั้น ดังนั้นจึงจงใจเพิกเฉยต่อฟังก์ชัน PopChar บางอย่าง) ฉันอาจจะต้องการบางอย่างที่ล้ำหน้ากว่านี้ ยังไงก็ขอบคุณอีกครั้ง! :-) - person petusek79; 16.04.2014