下面標簽中的 html 代碼按預期在瀏覽器中呈現。
好吧,java API 宣告不完全支持“邊框”,但示例中的填充也不起作用。
雖然希望不大,但還是想問問html中是否有替代畫邊框的方法。
我發現最接近的是一個單元格表。填充在那里起作用,但最薄的邊框非常華麗。
請注意,我只想框定單個單詞,而不是整行或整段。
import javax.swing.*;
public class HtmlLabel extends JFrame {
public HtmlLabel() {
setSize(300,200);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setTitle("A JLabel with HTML text");
JLabel lb= new JLabel("""
<html>Please give <span style="border:1px solid; background:#D8EAFC;\
padding:5px">me</span> a frame.</html>""");
add(lb);
setVisible(true);
}
public static void main(String args[]) {
SwingUtilities.invokeLater(HtmlLabel::new);
}
}
uj5u.com熱心網友回復:
不知道您從何處獲取 HTML 或如何構建它。
也許您可以將 aJTextPane與自定義一起使用Painter:
import java.awt.*;
import javax.swing.*;
import javax.swing.text.*;
import javax.swing.border.*;
public class TextPaneInsert2
{
private static void createAndShowGUI()
{
JTextPane textPane = new JTextPane();
textPane.setText("Please give me a frame");
textPane.setEditable( false );
try
{
RectanglePainter rp = new RectanglePainter( Color.BLACK );
textPane.getHighlighter().addHighlight(7, 13, rp);
}
catch (Exception e) {System.out.println(e);}
JFrame frame = new JFrame("SSCCE");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(textPane, BorderLayout.PAGE_START);
frame.add(textPane, BorderLayout.PAGE_END);
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.pack();
frame.setLocationByPlatform( true );
frame.setVisible( true );
}
public static void main(String[] args) throws Exception
{
java.awt.EventQueue.invokeLater( () -> createAndShowGUI() );
}
}
上面的代碼使用
筆記:
- 我在要突出顯示的單詞之前/之后添加了一個額外的空格以獲得額外的填充。
- 另外,不確定為什么我用 JTextPane 進行測驗。您可以使用任何文本組件,因此您也可以使用 JTextField。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/326959.html
