سؤال

أحاول عرض JLabel الذي يحتوي على بضعة أسطر من النص وصورة على النحو التالي:

String html = "<html> hello </br> <img src = \"/absolute/path/here\" height = \"30\"  width =\"40\"/> </html>";
JLabel l = new JLabel(html);

بالنسبة للصورة ، كل ما أحصل عليه هو صورة مكسورة ، هل من الممكن أن تعشق علامات IMG داخل JLabel؟

تحرير: أريد إضافة صور متعددة إلى JLabel لذلك لا أعتقد أن استخدام صورة سيفعلها هنا.

شكرًا

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

المحلول

بدلاً من ذلك ، حاول أن يكون لديك صور متعددة على jlabel واحدة لماذا لا تحتوي ببساطة على العديد من JLabels ، ولكل منها صورة واحدة (كما وصفت Uthark) ثم قم بتجميع جميع الملصقات معًا على JPanel واحد. يجب أن يمنحك هذا التأثير الذي تبحث عنه مع الحد الأدنى من التعقيد الإضافي فقط.

نصائح أخرى

File f = new File("C:\image.jpg"); 
jLabel1.setText("<html><img src=\"file:"+f.toString()+"\">");

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

For the image all I get is a broken image, is it possible to nest img tags inside a JLabel

هو - هي هو من الممكن عرض الصور (الصور) في نص Jlabel. أنت تحصل على صور مكسورة بسبب المسار غير صحيح. تحتاج إلى إما بادئة طريقك file: أو يفضل الحصول على جافا للقيام بذلك من أجلك class.getResource("/your/path"). فيما يلي مثال عمل ، فقط أدخل مسارات الموارد الصحيحة.

import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JLabel; 

public class MultipleImagesExample
{

  public static void main(String[] args)
  {

      JFrame frame = new JFrame();
      frame.setLayout(new BorderLayout());
      JLabel label = new JLabel(
          "<html>"
          + "<img src=\""
          + MultipleImagesExample.class.getResource("/resource/path/to/image1")
          + "\">"
          + "<img src=\""
          + MultipleImagesExample.class.getResource("/resource/path/to/image2")
          + "\">"
          + "The text</html>");
      frame.add(label, BorderLayout.CENTER);
      frame.setBounds(100, 100, 200, 100);
      frame.setVisible(true);
   }

 }

لأكثر تعقيدًا HTML في Java ، أوصي xhtmlrenderer.

ما لم تكن راضيًا عن Jeditorpane ، فأنت تنظر بشكل أساسي إلى WebBrowser بالكامل داخل Swing.

من الناحية المثالية ، ستستخدم JWebpane الذي سيكون عرض WebKit كمكون تأرجح ، لكنه لم يخرج بعد. أحدث المعلومات التي يمكن أن أجده هي هذا مشاركة مدونة.

مشروع DJ يسمح بتضمين المتصفح الأصلي للمنصة في التأرجح. يستخدم Internet Explorer على Windows و Xulrunner على Linux. ليس لديها أي دعم لنظام التشغيل Mac.

استخدم Jeditorpane لعرض HTML. يمكنك تغيير الخلفية ، Forground ، الخط وما إلى ذلك ، بحيث يبدو وكأنه تسمية.

لا يبدو أن النهج المذكورة أعلاه تعمل بعد الآن.

يبدو أن عليك الآن استخدام URI الفعلي في img بطاقة شعار.

الأشياء تعمل من أجلي "<img src=\"" + new File(...).toURI() + "\">".

الصور المدمجة غير مدعومة في HTML. وبالتالي ، يجب عليك استخدام seticon أو تزويد صورة إلى مُنشئ JLabel ؛ لا يمكن أن يكون HTML علامة IMG.

  JLabel imageLabel =
  new JLabel(labelText,
             new ImageIcon("path/to/image.gif"),
             JLabel.CENTER);

في حالتك تحتاج إلى استخدامها JtextPane لعرض HTML. انظر البرنامج التعليمي هنا

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top