62,614
社区成员
发帖
与我相关
我的任务
分享
package adminframe.xitiku;
import java.awt.Font;
import java.awt.Rectangle;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
public class Xitiku1 extends JFrame {
public Xitiku1() {
try {
jbInit();
} catch (Exception exception) {
exception.printStackTrace();
}
}
public String ImportText() {
String str = "";
try {
Scanner scanner = new Scanner(new File("D:\\abc.txt"));
while (scanner.hasNextLine()) {
str += scanner.nextLine();
str+='\n';
}
} catch (FileNotFoundException e) {
System.out.println("file doesn't exist");
}
return str;
}
private void jbInit() throws Exception {
// TODO Auto-generated method stub
getContentPane().setLayout(null);// 清空布局管理器
lab.setFont(new java.awt.Font("楷体_GB2312", Font.BOLD, 25));
lab.setText(" 例 题 讲 解 ");
lab.setBounds(new Rectangle(218, 25, 300, 20));
// setBounds(x,y,width,height); x:组件在容器X轴上的起点 y:组件在容器Y轴上的起点
// width:组件的长度 height:组件的高度
jScrollPane1.setBounds(new Rectangle(22,50, 600, 420));
jScrollPane1.setBorder(BorderFactory.createEtchedBorder());
lab1.setFont(new java.awt.Font("楷体_GB2312", Font.BOLD, 10));
lab1.setText(ImportText());
lab1.setBounds(new Rectangle(22, 15, 300, 100));
jScrollPane1.getViewport().add(lab1);
//设置文本自动换行
lab1.setLineWrap(true);
//设置滚动面板管理文本域
jScrollPane1.setViewportView(lab1);
lab1.setEditable(false);
this.setTitle("第一章");
this.getContentPane().add(lab);
this.getContentPane().add(lab1);
this.getContentPane().add(jScrollPane1);
jScrollPane1.getViewport().add(lab1);
// setLocationRelativeTo(this);
}
JLabel lab = new JLabel();
JTextArea lab1 = new JTextArea();
JScrollPane jScrollPane1 = new JScrollPane();
}
import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JTextArea;
public class TestFrame extends JFrame {
JTextArea jta ;
public TestFrame() {
jta = new JTextArea();
add(jta,BorderLayout.CENTER);
jta.setText("asdfbac\nwerwrowaer\nafsef");
this.pack();
this.setVisible(true);
}
public static void main(String[] args){
new TestFrame();
}
}
import java.awt.*;
import java.awt.font.*;
import java.awt.geom.*;
import java.io.File;
import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.text.*;
import java.util.List;
import javax.swing.*;
public class TextLayoutExample {
private TextLayoutExample(){}
public static void main(final String... args) {
EventQueue.invokeLater(new Runnable(){
@Override public void run(){
JFrame frame = new JFrame("TextLayout Example");
try {
frame.add(new TextViewer(Files.readAllLines(new File("TextLayoutExample.java").toPath(), Charset.forName("ASCII"))));
} catch(IOException e) {
}
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setPreferredSize(new Dimension(800,600));
frame.pack();
frame.setVisible(true);
}
});
}
private static class TextViewer extends JPanel {
private List<String> content = null;
public TextViewer(){}
public TextViewer(List<String> content) { this.content = content;}
public void setContent(List<String> content) { this.content = content ; repaint();}
@Override public void paintComponent(Graphics g) {
if(content == null) return;
Point2D.Float pen = new Point2D.Float(10,20);
Graphics2D g2d = (Graphics2D) g;
for(String s: content) {
if(s.isEmpty()) continue;
AttributedCharacterIterator asi = new AttributedString(s).getIterator();
LineBreakMeasurer lbm = new LineBreakMeasurer(asi, g2d.getFontRenderContext());
float wrappingWidth = getSize().width - 15;
while (lbm.getPosition() < asi.getEndIndex()){
TextLayout layout = lbm.nextLayout(wrappingWidth);
pen.y += (layout.getAscent());
float dx = layout.isLeftToRight() ?
0 : (wrappingWidth - layout.getAdvance());
layout.draw(g2d, pen.x + dx, pen.y);
pen.y += layout.getDescent() + layout.getLeading();
}
}
}
}
}