Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsWhite Papers
Discussion GroupsFirst AidDatabasesJavaBeansGUIJava 3DVirtual MachineCORBASecurityToolsGeneral
Java DirectoryOpen Source ProjectsSample Book ChaptersUser GroupsWeb Resources
Related Topics
Databases.NETMore Topics ...

Java Forum / General / October 2005

Tip: Looking for answers? Try searching our database.

Scaling

Thread view: 
freesoft_2000 - 10 Oct 2005 16:43 GMT
Hi everyone,

                 I have a JTextPane with some styled text in it and i am
trying to scale them.

                  What i mean is that assuming that the text inside the
JTextPane on startup is a 100% in size. After i click some JButton all the
font size of the entire document is reduced to 25%

                   The thing is that this JTextPane contains alot of text
that has different font sizes thus i want each of their respective font
sizes of the character to be 25% of its original value.

                    Does anyone know how to do this?

                    But is there another way i could achieve the scaling
of my styled text in my JTextPane so that it is 25% of its original value
by means of subclassing my JTextPane or StyledDocument class and overiding
its paint method?

                     Does anyone know how to do this?

Any help is greatly appreciated

Thank You

Yours Sincerely

Richard West
Thomas Fritsch - 10 Oct 2005 20:17 GMT
>                  I have a JTextPane with some styled text in it and i am
> trying to scale them.
[quoted text clipped - 15 lines]
>
>                      Does anyone know how to do this?

I remember a similar question in group comp.lang.java.help.
Google for "html with jtextpane" on 4.July 2005.
Signature

"TFritsch$t-online:de".replace(':','.').replace('$','@')

Roedy Green - 10 Oct 2005 21:14 GMT
>                    The thing is that this JTextPane contains alot of text
>that has different font sizes thus i want each of their respective font
>sizes of the character to be 25% of its original value.

I suppose you might do something with an AffineTransform and pass the
original paint method a modified Graphics object.  I don't know if
fonts grow and shrink too.

See http://mindprod.com/jgloss/affinetransform.html
Signature

Canadian Mind Products, Roedy Green.
http://mindprod.com Again taking new Java programming contracts.

freesoft_2000 - 11 Oct 2005 09:39 GMT
Hi everyone,

            I think you guys have misunderstood my question in that i am
not talking about scaling for printing but something of a zoom in and zoom
out for the JTextPane

Here is a full compilable example where you guys can compile the code and
see what i mean first hand

[code]
import java.awt.*;
import java.util.*;
import java.awt.geom.*;
import javax.swing.*;
import javax.swing.text.*;

public class JTextScalar

{
    JFrame fr = new JFrame ("Frame");

    JScalableTextPane TextPane1 = new JScalableTextPane();

    StyleContext sc = new StyleContext();

    DefaultStyledDocument dse = new DefaultStyledDocument(sc);

    JScrollPane ScrollPane1 = new JScrollPane(TextPane1,
ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS,
    ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);

    StyledEditorKit StyledEditorKit1 = new StyledEditorKit();                
                     

    JViewport viewport;

    public void initialize()
    {
        Container pane = fr.getContentPane();
        pane.setLayout(new BorderLayout());
        fr.setSize(250,300);
        fr.setLocation(300,300);
        fr.setBackground(Color.lightGray);

        dse.putProperty("i18n", Boolean.TRUE);

        TextPane1.setEditorKit(StyledEditorKit1);

        //The below command line sets the document that the JTextPane will be
        //be referencing to

        TextPane1.setDocument(dse);

        viewport = new JViewport();
        viewport.setView(TextPane1);
        viewport.setScrollMode(viewport.SIMPLE_SCROLL_MODE);
        //viewport.setScrollMode(viewport.BACKINGSTORE_SCROLL_MODE);
        ScrollPane1.setViewport(viewport);

        pane.add("Center", ScrollPane1);
        //ScrollPane1.invalidate();
        ScrollPane1.revalidate();
        ScrollPane1.repaint();
        TextPane1.revalidate();
        TextPane1.repaint();

        fr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        fr.pack();
        fr.setVisible(true);
    }

    public static void main(String args[])
    {
        JTextScalar a = new JTextScalar();
        a.initialize();
    }
}

class JScalableTextPane extends JTextPane

{
    /*
public void paintComponent(Graphics g)
{
//This function overrides the JPanel paintComponent function
//and paints the buffered image on the JPEGPanel

Graphics2D g2d = (Graphics2D)g;
g2d.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS,
                    RenderingHints.VALUE_FRACTIONALMETRICS_ON);

g2d.scale(0.5, 0.5);
//AffineTransform old = g2d.getTransform();
//g2d.setTransform(old);
//super.notify();
//super.revalidate();
//super.repaint();
super.paintComponent(g2d);
}
*/
    public void paint(Graphics g)
    {
        Graphics2D g2d = (Graphics2D)g;
        g2d.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS,
        RenderingHints.VALUE_FRACTIONALMETRICS_ON);

        g2d.scale(0.5,0.5);
        AffineTransform old = g2d.getTransform();
        g2d.setTransform(old);
        super.paint(g2d);
    }

    public Dimension getPreferredSize()
    {
        Dimension d= super.getPreferredSize();
        d.setSize(d.width*0.5,d.height*0.5);  
        return d;
    }

    public Dimension getMinimumSize ()
    {
        Dimension d= super.getMinimumSize ();
        d.setSize(d.width*0.5,d.height*0.5);  
        return d;
    }

    public Dimension getMaximumSize ()
    {
        Dimension d= super.getMaximumSize();
        d.setSize(d.width*0.5,d.height*0.5);  
        return d;
    }

    public Dimension getSize ()
    {
        Dimension d= super.getSize ();
        d.setSize(d.width*0.5,d.height*0.5);  
        return d;
    }

}

The thing is that the text is scaled corretly but ScrollPane screws up
completely and the typing of the text is not accurate

Is the way i am scaling the JTextpane correct?

Any help is greatly appreciated

Thank You

Yours Sincerely

Richard West
zero - 11 Oct 2005 13:46 GMT
> Hi everyone,
>
[quoted text clipped - 5 lines]
> Here is a full compilable example where you guys can compile the code
> and see what i mean first hand

<snipped>

this is very specific to Swing GUIs, so I think you may have better luck in
either comp.lang.java.gui, or sun's own swing forum at
http://forums.java.sun.com/forum.jspa?forumID=57
Roedy Green - 13 Oct 2005 05:43 GMT
>Graphics2D g2d = (Graphics2D)g;
>        g2d.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS,
[quoted text clipped - 4 lines]
>        g2d.setTransform(old);
>        super.paint(g2d);
this code here should read:

Graphics2D g2d = (Graphics2D)g;
g2d.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS,
RenderingHints.VALUE_FRACTIONALMETRICS_ON);
AffineTransform old = g2d.getTransform();
g2d.scale(0.5,0.5);
super.paint(g2d);
g2d.setTransform(old);
Signature

Canadian Mind Products, Roedy Green.
http://mindprod.com Again taking new Java programming contracts.

Roedy Green - 13 Oct 2005 05:45 GMT
>    public void paint(Graphics g)
>    {
[quoted text clipped - 7 lines]
>        super.paint(g2d);
>    }

because you are using Swing, you should be overriding paintComponent,
not paint.
Signature

Canadian Mind Products, Roedy Green.
http://mindprod.com Again taking new Java programming contracts.



Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.