gpt4 book ai didi

java - 删除最近在 JTextPane 上添加的 JLabel

转载 作者:行者123 更新时间:2023-12-01 04:40:57 26 4
gpt4 key购买 nike

您好,我正在 JTextPane 中使用 JLabel 制作在线用户名列表。

我使用 JLabel 因为我希望名称是可点击的我能够使用 styleddocument 水平对齐它们现在我的问题是

如何删除最近插入的 JLabel?我尝试了 JTextPane 的删除方法,但没有成功。我需要在用户离线时删除 JLabel。

我的代码:

public static void getUsernames()
{
try{
String query = "SELECT username FROM members WHERE status = 'offline'";
ps3 = con.prepareStatement(query);
rs2 = ps3.executeQuery();

}catch(Exception ex){ex.printStackTrace();}

}
public static void resultGetUsername(JTextPane jtp,StyledDocument sd)
{
try {
while (rs2.next())
{

final JLabel jl = new JLabel(rs2.getString("username"));
final String username = rs2.getString("username");
Border d = BorderFactory.createEmptyBorder(1,10,1,10);
Border d2 = BorderFactory.createLineBorder(Color.BLACK);
Border d3 = BorderFactory.createCompoundBorder(d2,d);
jl.setFont(new Font("Calibri",Font.BOLD,16));
jl.setBorder(d3);
jl.setOpaque(true);
jl.setBackground(Color.ORANGE);
jl.addMouseListener(new MouseListener(){

public void mouseClicked(MouseEvent arg0) {
}

public void mouseEntered(MouseEvent arg0) {
jl.setForeground(new Color(30,144,255));
}

public void mouseExited(MouseEvent arg0) {
jl.setForeground(Color.BLACK);
}

public void mousePressed(MouseEvent e) {
jl.setForeground(new Color(210,105,30));
jl.setBackground(new Color(154,205,50));

}

public void mouseReleased(MouseEvent e) {
jl.setBackground(Color.ORANGE);
jl.setForeground(Color.BLACK);
if(e.getClickCount() ==2)
new OneToOneChat(username);
}


});

Cursor c = new Cursor(Cursor.HAND_CURSOR);
jl.setCursor(c);
jtp.insertComponent(jl);
sd.insertString(sd.getLength(), "\n", SubPanel1.sas);
}
} catch (SQLException e) {

} catch (BadLocationException e) {

}
finally{
if (rs2 != null) {
try {
rs2.close();
} catch (SQLException sqlEx) { }

rs2 = null;
}

if (ps3 != null) {
try {
ps3.close();
} catch (SQLException sqlEx) { }

ps3 = null;
}
}
}

最佳答案

您可以使用以下方法从 JTextPane 中删除标签setText("")getStyledDocument().remove(0, doc.getLength())

如果您需要获取标签,这篇文章可能会有所帮助:Get a component from a JTextPane through javax.swing.text.Element?

然后将所需的标签添加回 JTextPane

关于java - 删除最近在 JTextPane 上添加的 JLabel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16555894/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com