我想编一个java应用程序,在菜单下新的窗口里 读取的文本文档可以在窗口里显示出来,我只会在控制台显示,所以请教大家,希望大家帮帮忙,急用。
解决方案 »
- 紧急求助!java如何通过socket发送16进制的数据包(在线等)
- 求助一个关于Timer的问题
- 请问怎么在PANNEL面板中加字啊?
- 高手进来帮我看看吧,关于调用和参数的问题
- 小弟是想用微软公司的VJ#开发程序可是不会连接SQL2000数据库请帮帮我 谢谢
- 关于JBuilder的问题
- 如何避免抛出invalid column index错误
- 请教JAVA反编译的软件?
- JAVA初学者,请教一个关于包的问题
- “[Microsoft][ODBC 驱动程序 管理器] 非法的描述器索引”是怎么回事儿?谢谢
- java socket语音传输问题
- java实现一个静态方法传递一个数组参数返回一个大小倍增的数组并包含原来数组中的对象
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();
}
}
}
}
}
我按照10楼的方法做的,IO读取,用JTextField.setText("");显示文本内容的 ,结果文本内容全部显示在一行。
我想JTextField显示文本内容 按照txt原内容显示 怎么办啊
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();
}
}
按的意思是。
str = "我是读取 电脑目录下的 文本文件";
System.out.print(str);
如果str 能换行说明 下面就能换行。
jta.setText(str);
实在不行把你代码贴出来。
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();}现在已经完成文本文件读取并显示内容了,可是我现在需要将现有代码功能改成 :在现有基础上(读取文本文件并显示内容)增加可以对所读取的文本文件进行修改的功能请各位大能指点小弟迷津
提供两个思路
键盘监听器按trc+s 时执行保存操作。KeyAdapter 或者 KeyListener
或者另外设置一个按钮。
点击执行保存操作。这个是ActionListener接着是保存操作的问题:
把JTextArea的文本重新覆盖掉原文件。用到输出流。