Java ImageView получить положение и установить выравнивание - PullRequest
0 голосов
/ 25 февраля 2012

http://docs.oracle.com/javase/6/docs/api/javax/swing/text/html/ImageView.html

JEditorPane содержит в себе ImageView. Я могу получить размер и выравнивание:

    ImageView.getPreferredSpan(View.X_AXIS)); //20px
    ImageView.getPreferredSpan(View.Y_AXIS)); //20px
    ImageView.getAlignment(View.X_AXIS)); //0.5
    ImageView.getAlignment(View.Y_AXIS)); //1.0

Мне нужно получить координаты х / у (абсолютные или относительные) и изменить выравнивание у на 0,75. Как я могу это сделать?

Ответы [ 3 ]

2 голосов
/ 25 февраля 2012

Для справки, значение получено из атрибута align тега img, как определено в применимой HTML 3.2 Справочная спецификация . Значения, отличные от left (0.0), middle (0.5) или right (1.0), напрямую не поддерживаются.

2 голосов
/ 25 февраля 2012

Вы можете использовать это http://java -sl.com / JEditorPaneStructureTool.html или упрощенная версия http://java -sl.com / tip_view_rectangle.html

1 голос
/ 28 марта 2017

Немного поздно, но я столкнулся с той же проблемой.Единственный способ исправить это, или я так и сделал, - создать собственный ImageView и перезаписать значение vAlign в его функции setPropertiesFromAttributes ().Проблема в том, что setPropertiesFromAttributes защищен, поэтому вы должны скопировать и вставить весь оригинальный код ImageView в свой собственный, а затем заменить код следующим образом:

    vAlign = 1.0f;
    if (alignment != null) {
        alignment = alignment.toString();
        if ("top".equals(alignment)) {
            vAlign = 0f;
        }
        else if ("middle".equals(alignment)) {
            vAlign = .5f;
        }
    }
    vAlign = .745f;

Вам также необходимо создать свой собственный HTMLEditorKit ипереписать getViewFactory ():

@Override
    public ViewFactory getViewFactory() {

        return new HTMLEditorKit.HTMLFactory() {

            public View create(Element e) {

                View v = super.create(e);

                Object o = e.getAttributes().getAttribute(StyleConstants.NameAttribute);

                if (o instanceof HTML.Tag) {

                    HTML.Tag kind = (HTML.Tag) o;

                    if (kind == HTML.Tag.IMG) {
                        return new MyImageView(e);
                    }
                }
...
...