如何在java中的JTextArea中查看文本?

时间:2015-07-27 08:57:28

标签: java swing jtextarea

我正在尝试在JTextArea中添加文本。 但是我需要一些文本来进行攻击,有些文本需要添加。 我在互联网上搜索过,但无法找到答案。 有关什么参考的任何帮助?

2 个答案:

答案 0 :(得分:4)

JTextArea允许您设置字体样式,但不能将样式部分设置为文本。请参阅下面的代码,您可以使用setFont方法指定带有strikethru样式的字体,但它适用于JTextArea中的所有文字:

JTextArea area = new JTextArea();
Font font = new Font("arial", Font.PLAIN, 12);
Map fontAttr = font.getAttributes();
fontAttr.put (TextAttribute.STRIKETHROUGH, TextAttribute.STRIKETHROUGH_ON);
Font myFont = new Font(fontAttr);
area.setFont (myFont);
area.setText ("Hello");

然而,如果你想要一些文字是strikethru而有些没有,那么你必须使用JTextPaneStyledDocument,但是我不推荐这个,因为你需要做很多调整来展示你的具有特定风格的内容。下面的代码可能会给你一个想法:

DefaultStyledDocument doc = new DefaultStyledDocument();
StyleContext sc = new StyleContext();
Style style = sc.addStyle("strikethru", null);
StyleConstants.setStrikeThrough (style,true);
doc.insertString (0, "Hello ", null);
doc.insertString (6, "strike through ", style);
JTextPane pane = new JTextPane(doc);

答案 1 :(得分:1)

您可以使用以下代码。这里有一些罢工文本" @ 11 @"," @ 22 @"还有一些要添加文字" @ yicHFRx1nc @" " @ icHFRx1nc @"取代罢工文本。

import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;

public class JTextAreaExample {

    private JFrame mainFrame;
    private JLabel headerLabel;
    private JLabel statusLabel;
    private JPanel controlPanel;

    public JTextAreaExample() {
        prepareGUI();
    }

    public static void main(String[] args) {
        JTextAreaExample swingControlDemo = new JTextAreaExample();
        swingControlDemo.showTextAreaDemo();
    }

    private void prepareGUI() {
        mainFrame = new JFrame("JTextArea Example");
        mainFrame.setSize(400, 400);
        mainFrame.setLayout(new GridLayout(3, 1));
        mainFrame.addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent windowEvent) {
                System.exit(0);
            }
        });
        headerLabel = new JLabel("", JLabel.CENTER);
        statusLabel = new JLabel("", JLabel.CENTER);

        statusLabel.setSize(350, 100);

        controlPanel = new JPanel();
        controlPanel.setLayout(new FlowLayout());

        mainFrame.add(headerLabel);
        mainFrame.add(controlPanel);
        mainFrame.add(statusLabel);
        mainFrame.setVisible(true);
    }

    private void showTextAreaDemo() {
        headerLabel.setText("JTextArea");

        JLabel descriptionLabel = new JLabel("Description: ", JLabel.RIGHT);

        final JTextArea descriptionTextArea = new JTextArea("Enter String ", 5, 20);

        JScrollPane scrollPane = new JScrollPane(descriptionTextArea);

        JButton showButton = new JButton("Show");

        showButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                String b = descriptionTextArea.getText().replace("@11@", "@yicHFRx1nc@")
                        .replace("@22@", "@icHFRx1nc@");
                System.out.println("b=" + b);
                statusLabel.setText(b);
            }
        });

        controlPanel.add(descriptionLabel);
        controlPanel.add(scrollPane);
        controlPanel.add(showButton);
        mainFrame.setVisible(true);
    }

}