سؤال

ونريد أن نظهر تلميحا لJList التي يمكن للمستخدم تحديد عناصر متعددة مع مفتاح تعتمد منصة لتحديد متعدد.

ولكن لم أجد أي طريقة لإظهار COMMAND رمز OS X في JLabel، وهو ما يعني الرمز الذي هو مطبوع على لوحة المفاتيح تفاحة على مفتاح الأوامر، وتسمى أيضا مفتاح التفاح.

وهنا صورة للرمز أريد أن عرض على OS X.
<الفرعية> (المصدر: wikimedia.org )

وأيضا أريد أن يكون ذلك منصة مستقلة.

وأي بمعنى. شيء من هذا القبيل

component.add( new JList() , BorderLayout.CENTER );
component.add( new JLabel( MessageFormat.format("With {0} you can " 
  + "select multiple items", 
  KeyStroke.getKeyStroke( ... , ... ) ) ) , BorderLayout.SOUTH );

وأين بدلا من {0} يجب أن تظهر هناك فوق رمز شاهدت هذا ...

هل هناك أي واحد منكم الرجال تعرف كيف تفعل هذا؟ وأنا أعلم أنه يجب أن يكون من الممكن بطريقة أو بأخرى لأنه في JMenuItems هناك رمز ...

وتطبيقاتي (حلول غير الرسومية) يبدو مثل هذا:

add( new JLabel( MessageFormat.format(
  "With {0} you can select multiple items" , 
  System.getProperty( "mrj.version" ) != null ? "COMMAND" : "CTRL" ) ) ,
  BorderLayout.SOUTH );
هل كانت مفيدة؟

المحلول

ورمز في السؤال هو افايابلي من خلال يونيكود ومجموعات الأحرف HTML. كل ما عليك القيام به هو جعل حياتك JLabel عرض HTML قبل بدء سلسلة نصية مع ثم بعد ذلك تتضمن رمز الحرف.

JLabel label = new JLabel( "<html>&#8984; is the Apple command symbol." );

وهذا سوف يعمل على ماك، ولكن ليس لدي فكرة عما سنفعل على منصات أخرى، على الرغم من أنك لا يبدو أن لديها التي غطت خارج.

نصائح أخرى

وكما يشير ديفيد الخروج، يمكنك استخدام يونيكود تسلسل هروب \u2318 على الرغم من أنه يجب عرض مع خط تدعم ذلك.

والحل الخاص بك تبدو مثالية. أفترض أنك تنوي عامل من رمز تلميح لذلك يمكنك إعادة استخدامها.

add( new JLabel( MessageFormat.format(
  "With {0} you can select multiple items", 
  getMetaKeyHint(),
  BorderLayout.SOUTH );

public String getMetaKeyHint() {
    return System.getProperty( "mrj.version" ) != null ? "COMMAND" : "CTRL" );
}

ويمكنني استخدام التعليمات البرمجية التالية للتحقق من النظام وتحميل وفقا لذلك

(System.getProperty("os.name").toUpperCase(Locale.US).indexOf("MAC OS X") == 0 )
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top