Java: HTML / CSS в Swing, встроенный дисплей не работает - PullRequest
4 голосов
/ 05 сентября 2011

Я пытаюсь отобразить сложную строку в Swing JButton, используя HTML / CSS. Я использую атрибуты CSS1, который поддерживается Swing. Проблема заключается в следующем: заголовок кнопки разбивается на 3 отдельные строки, а не на одну строку:

javax.swing.JButton("<html><div style='display:inline;'>regular </div><div style='background-color:#336699;color:#fff;display:inline;'>special</div><div style='display:inline;'> regular again");

enter image description here

Обратите внимание, что указанная строка прекрасно работает на веб-странице браузера, генерируя одну строку (без разрывов строки):

enter image description here

Я попытался использовать «float: left» и «display: inline-block» - они также не имеют видимого эффекта.

У кого-нибудь есть идея, почему это происходит и что можно сделать? Пожалуйста, ограничьте ваши ответы HTML / CSS, так как я не хочу реализовывать специальный L & F или класс для этой проблемы.

Ответы [ 2 ]

2 голосов
/ 05 сентября 2011

Ну, традиционно <span> похож на <div>, за исключением того, что по умолчанию используется встроенный дисплей. Я бы попробовал это сначала, прежде чем связываться со многими другими.

EDIT:

Хорошо, поэтому я немного поиграл с этим, следующий html работает для меня:

"<html>" + 
"regular" +
"<font style='background-color:#336699; color:#fff;'>special</font>" +
"regular again"
0 голосов
/ 05 сентября 2011

1) ваш синтаксис Html / Css недействителен для Java6 " вместо ' и наоборот

2), пожалуйста, ваш вопрос будет основан на этом SSCCE

картинки

enter image description here enter image description here enter image description here

код

import java.awt.Color;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.*;
import org.pushingpixels.trident.Timeline;

public class ButtonFg extends JFrame {

    private static final long serialVersionUID = 1L;

    public ButtonFg() {
        JButton button = new JButton("<html><div style='display:inline;"
                + "'>regular </div><div style='background-color:#336699;"
                + "color:#fff;display:inline;'>special</div>"
                + "<div style='display:inline;'> regular again");
        button.setForeground(Color.blue);
        button.setFocusPainted(false);
        add(button);
        final Timeline rolloverTimeline = new Timeline(button);
        rolloverTimeline.addPropertyToInterpolate(
                "foreground", Color.blue, Color.red);
        rolloverTimeline.setDuration(2500);
        button.addMouseListener(new MouseAdapter() {

            @Override
            public void mouseEntered(MouseEvent e) {
                rolloverTimeline.play();
            }

            @Override
            public void mouseExited(MouseEvent e) {
                rolloverTimeline.playReverse();
            }
        });
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocation(150, 150);
        pack();
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {

            @Override
            public void run() {
                new ButtonFg().setVisible(true);
            }
        });
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...