我在JPanel中有一個JLabel。我使用Netbeans IDE作爲我的java程序的GUI(免費設計,沒有佈局管理器)。如何在運行時突出顯示JLabel的一部分?
在運行時我需要突出顯示我的JLabel的一部分。突出的JLabel的一部分可以作爲這裏說的做:How to highlight part of a JLabel?
我不知道該怎麼做,在運行時,我的意思是我已經有一個JLabel,現在我能覆蓋這對於那些的paintComponent()方法目的?
我在JPanel中有一個JLabel。我使用Netbeans IDE作爲我的java程序的GUI(免費設計,沒有佈局管理器)。如何在運行時突出顯示JLabel的一部分?
在運行時我需要突出顯示我的JLabel的一部分。突出的JLabel的一部分可以作爲這裏說的做:How to highlight part of a JLabel?
我不知道該怎麼做,在運行時,我的意思是我已經有一個JLabel,現在我能覆蓋這對於那些的paintComponent()方法目的?
這裏是你提到的職位由吉洪Jelvis給出的答案的一個示例是,所有你需要的是增加一些領域(在這個例子中start
和end
)以指示突出的區域,並使用方法(在該示例highlightRegion
)來設置這些字段:
import java.awt.Color;
import java.awt.FontMetrics;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class Main
{
public static void main(String[] argv)
{
JFrame frame = new JFrame("Highlighting");
frame.setSize(300, 100);
Label label = new Label();
label.setText("Money does not buy happiness");
label.setVerticalAlignment(JLabel.TOP);
label.highlightRegion(3, 15);
frame.add(label);
frame.setVisible(true);
}
static class Label extends JLabel
{
private static final long serialVersionUID = 1L;
private int start;
private int end;
@Override
public void paint(Graphics g)
{
FontMetrics fontMetrics = g.getFontMetrics();
String startString = getText().substring(0, start);
String text = getText().substring(start, end);
int startX = fontMetrics.stringWidth(startString);
int startY = 0;
int length = fontMetrics.stringWidth(text);
int height = fontMetrics.getHeight();
g.setColor(new Color(0x33, 0x66, 0xFF, 0x66));
g.fillRect(startX, startY, length, height);
super.paint(g);
}
public void highlightRegion(int start, int end)
{
this.start = start;
this.end = end;
}
}
}
通知使用label.setVerticalAlignment(JLabel.TOP);
以簡化的東西。如果你不使用它,那麼你需要做額外的計算來確定要突出顯示的區域的確切垂直位置。
thanx使用HTML,但它不能解決我的問題。我必須使用netbeans免費設計工具爲我的圖形用戶界面,這些作品不能在這樣的情況下完成,因爲Netbeans只允許我使用JLabel,而不是它的繼承者... – Soheil
@ user1986618創建一個新的標籤類(稱爲HighlightLabel)在您的項目基於上一個問題的代碼。做一個乾淨的和建設的項目。創建一個新窗體,將該類(從項目)拖到窗體上。它甚至可以添加到調色板,如果你真的想 – MadProgrammer
@MadProgrammer太棒了!非常感謝你的驚人答案!我不知道這樣的作品在Netbeans中是可能的! +1 – Soheil
它可能會更容易使用JTextField沒有邊界,並設置爲透明 - 恕我直言 – MadProgrammer
我的問題是不是如何做突出顯示,它是如何做在運行時在頁面中說什麼... – Soheil
只是改變文本與HTML內,從未嘗試過,也許你將需要打電話repaint() – Zemzela