private static String txtToHtml(String s) {
StringBuilder builder = new StringBuilder()
boolean previousWasASpace = false
for (char c : s.toCharArray()) {
if (c == ' ') {
if (previousWasASpace) {
builder.append(" ")
previousWasASpace = false
continue
}
previousWasASpace = true
} else {
previousWasASpace = false
}
switch (c) {
case '<':
builder.append("<")
break
case '>':
builder.append(">")
break
case '&':
builder.append("&")
break
case '"':
builder.append(""")
break
case '\n':
builder.append("<br>")
break
// We need Tab support here, because we print StackTraces as HTML
case '\t':
builder.append(" ")
break
default:
builder.append(c)
}
}
String converted = builder.toString()
String str = "(?i)\\b((?:https?://|www\\d{0,3}[.]|[a-z0-9.\\-]+[.][a-z]{2,4}/)(?:[^\\s()<>]+|\\(([^\\s()<>]+|(\\([^\\s()<>]+\\)))*\\))+(?:\\(([^\\s()<>]+|(\\([^\\s()<>]+\\)))*\\)|[^\\s`!()\\[\\]{}:\'\".,<>?«»“”‘’]))"
Pattern patt = Pattern.compile(str)
Matcher matcher = patt.matcher(converted)
converted = matcher.replaceAll("<a href=\"$1\">$1</a>")
return converted
}
import javax.swing.*import java.awt.*
import java.awt.event.*
public class HtmlDemo extends JPanel
implements ActionListener {
JLabel theLabel
JTextArea htmlTextArea
public HtmlDemo() {
setLayout(new BoxLayout(this, BoxLayout.LINE_AXIS))
String initialText = "<html>\n" +
"Color and font test:\n" +
"<ul>\n" +
"<li><font color=red>red</font>\n" +
"<li><font color=blue>blue</font>\n" +
"<li><font color=green>green</font>\n" +
"<li><font size=-2>small</font>\n" +
"<li><font size=+2>large</font>\n" +
"<li><i>italic</i>\n" +
"<li><b>bold</b>\n" +
"</ul>\n"
htmlTextArea = new JTextArea(10, 20)
htmlTextArea.setText(initialText)
JScrollPane scrollPane = new JScrollPane(htmlTextArea)
JButton changeTheLabel = new JButton("Change the label")
changeTheLabel.setMnemonic(KeyEvent.VK_C)
changeTheLabel.setAlignmentX(Component.CENTER_ALIGNMENT)
changeTheLabel.addActionListener(this)
theLabel = new JLabel(initialText) {
public Dimension getPreferredSize() {
return new Dimension(200, 200)
}
public Dimension getMinimumSize() {
return new Dimension(200, 200)
}
public Dimension getMaximumSize() {
return new Dimension(200, 200)
}
}
theLabel.setVerticalAlignment(SwingConstants.CENTER)
theLabel.setHorizontalAlignment(SwingConstants.CENTER)
JPanel leftPanel = new JPanel()
leftPanel.setLayout(new BoxLayout(leftPanel, BoxLayout.PAGE_AXIS))
leftPanel.setBorder(BorderFactory.createCompoundBorder(
BorderFactory.createTitledBorder(
"Edit the HTML, then click the button"),
BorderFactory.createEmptyBorder(10,10,10,10)))
leftPanel.add(scrollPane)
leftPanel.add(Box.createRigidArea(new Dimension(0,10)))
leftPanel.add(changeTheLabel)
JPanel rightPanel = new JPanel()
rightPanel.setLayout(new BoxLayout(rightPanel, BoxLayout.PAGE_AXIS))
rightPanel.setBorder(BorderFactory.createCompoundBorder(
BorderFactory.createTitledBorder("A label with HTML"),
BorderFactory.createEmptyBorder(10,10,10,10)))
rightPanel.add(theLabel)
setBorder(BorderFactory.createEmptyBorder(10,10,10,10))
add(leftPanel)
add(Box.createRigidArea(new Dimension(10,0)))
add(rightPanel)
}
//React to the user pushing the Change button.
public void actionPerformed(ActionEvent e) {
theLabel.setText(htmlTextArea.getText())
}
/**
* Create the GUI and show it. For thread safety,
* this method should be invoked from the
* event dispatch thread.
*/
private static void createAndShowGUI() {
//Create and set up the window.
JFrame frame = new JFrame("HtmlDemo")
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
//Add content to the window.
frame.add(new HtmlDemo())
//Display the window.
frame.pack()
frame.setVisible(true)
}
public static void main(String[] args) {
//Schedule a job for the event dispatch thread:
//creating and showing this application's GUI.
SwingUtilities.invokeLater(new Runnable() {
public void run() {
//Turn off metal's use of bold fonts
UIManager.put("swing.boldMetal", Boolean.FALSE)
createAndShowGUI()
}
})
}
}
java的demo,你看看把,没明白你要的是什么东西。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)