📄 justify.java
字号:
// Justify.java
import java.awt.*;
import java.awt.font.*;
import java.text.*;
import java.util.*;
public class Justify extends java.applet.Applet
{
final static int LEFT = 0;
final static int RIGHT = 1;
final static int CENTER = 2;
final static int EQUALITY = 3;
int justify = EQUALITY;
public void paint (Graphics g)
{
Dimension size = getSize ();
String s = "To plagiarize or not to plagiarize William " +
"Shakespeare, that is the question! Whether " +
"'tis nobler in the mind to suffer the lack of " +
"ideas for a decent paragraph, or to take arms " +
"against Mr. Shakespeare by plagiarizing his work " +
"... 'tis a consummation devoutly to be wished!";
Hashtable map = new Hashtable ();
map.put (TextAttribute.SIZE, new Float (18.0f));
AttributedString as = new AttributedString (s, map);
map = new Hashtable ();
map.put (TextAttribute.POSTURE, TextAttribute.POSTURE_OBLIQUE);
as.addAttributes (map, 33, 52);
AttributedCharacterIterator aci = as.getIterator ();
int startIndex = aci.getBeginIndex ();
int endIndex = aci.getEndIndex ();
LineBreakMeasurer measurer;
measurer = new LineBreakMeasurer (aci,
new FontRenderContext (null,
false,
false));
measurer.setPosition (startIndex);
float wrappingWidth = (float) size.width;
float Y = 0.0f;
while (measurer.getPosition () < endIndex)
{
TextLayout layout = measurer.nextLayout (wrappingWidth);
Y += layout.getAscent ();
float X = 0.0f;
switch (justify)
{
case LEFT:
if (layout.isLeftToRight ())
X = 0.0f;
else
X = wrappingWidth - layout.getAdvance ();
break;
case RIGHT:
if (layout.isLeftToRight ())
X = wrappingWidth - layout.getVisibleAdvance ();
else
X = wrappingWidth;
break;
case CENTER:
if (layout.isLeftToRight ())
X = (wrappingWidth - layout.getVisibleAdvance ())
/ 2;
else
X = (wrappingWidth + layout.getAdvance ()) / 2 -
layout.getAdvance ();
break;
case EQUALITY:
layout = layout.getJustifiedLayout (wrappingWidth);
}
layout.draw ((Graphics2D) g, X, Y);
Y += layout.getDescent () + layout.getLeading ();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -