سؤال

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

والمشكلة هي أنا في حاجة إلى القطعة لينك ليرث التدرج من المجمع الذي كان في. وهي تفعل ذلك بشكل صحيح، فقط عندما يتم تغيير حجمه أو تمريره ارتباط مضات المكون. الارتباط هو العنصر الوحيد الذي رأيته في هذا الشأن.

في محاولة لإصلاح هذا حاولت التلاعب المكونات الأخرى في وجود صلات يمكن النقر عليها، ولكن لم أجد حلا جيدا حتى الان.

وهناك على أية حال لإصلاح تأثير الخفقان على رابط، أو أن هناك مكون آخر الذي من شأنه أن يدعم الروابط؟

شكرا،

وبراين

هل كانت مفيدة؟

المحلول

وبعد قضاء يوم عمل في هذا الشأن، خطرت لي حلا. أنا خلق مركب لمنطقة النص. لكل الكلمة التي ليست جزءا من رابط، وحصلت على تسمية خاصة بها. للحصول على ارتباطات، وحصلت على كل حرف تسمية خاصة بها. ثم حصلت التسميات للشخصيات رابط مستمعا لإطلاق المتصفح. تستخدم هذه الطريقة بشرط وظيفة وصلة، والتعامل معها بشكل صحيح تغيير حجم، وليس لديها وميض.

نصائح أخرى

هل حاولت تمرير SWT.NO_BACKGROUND إلى القطعة ارتباط بك؟ قد تحصل غريبا بعض الشيء ... وكنت قد تضطر إلى القيام المزيد من العمل للحصول على واجهة المستخدم الرسومية رسم بشكل صحيح، ولكن ذلك سيكون أول تخميني.

وبخلاف ذلك، وهنا قال لي خيارات ن 'تنفيذ القذرة من رابط من داخل StyledText. وسوف تحتاج لملء لتغيير المؤشر (اذا كان هذا ما تريد)، فضلا عن الخروج مع جيدة "النص لربط" نظام التعيين.

والشيء الوحيد هو أنني لست متأكدا مما اذا كان StyledText سيرث الخلفية الخاصة بك ... إعطائها بالرصاص.

public class StyledTextExample {
   public static void main(String [] args) {
    // create the widget's shell
    Shell shell = new Shell();
    shell.setLayout(new FillLayout());
    shell.setSize(200, 100);
    Display display = shell.getDisplay();
    // create the styled text widget
    final StyledText widget = new StyledText(shell, SWT.NONE);

    String text = "This is the StyledText widget.";
    widget.setText(text);
    widget.setEditable(false);

    final StyleRange hyperlinkStyle = new StyleRange();
    String linkWord = "StyledText";
    hyperlinkStyle.start = text.indexOf(linkWord);
    hyperlinkStyle.length = linkWord.length();
    hyperlinkStyle.fontStyle = SWT.BOLD;
    hyperlinkStyle.foreground = display.getSystemColor(SWT.COLOR_BLUE);
    widget.setStyleRange(hyperlinkStyle);


    widget.addMouseListener(new MouseAdapter() {
        public void mouseUp(MouseEvent arg0) {
            Point clickPoint = new Point(arg0.x, arg0.y);
            try {
                int offset = widget.getOffsetAtLocation(clickPoint);
                if (widget.getStyleRangeAtOffset(offset) != null) {
                    System.out.println("link");
                }
            } catch (IllegalArgumentException e) {
                //ignore, clicked out of text range.
            }
        }});
    shell.open();
    while (!shell.isDisposed())
    if (!display.readAndDispatch()) display.sleep();
   }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top