2013-05-15 3 views
1

안녕하세요, 저는 JTextPane에서 JLabel을 사용하여 온라인 사용자 이름 목록을 작성하고있었습니다. 내가 어떻게 최근에 삽입 된 JLabel의를 삭제할 수 있습니다 지금 내 문제 인 StyledDocument를최근에 JTextPane에 JLabel을 추가했습니다.

되어 사용하여 수평으로 allign 할 수 있었다 클릭으로 이름을 원하기 때문에

나는 JLabel의 사용? JTextPane의 remove 메서드를 시도했지만 작동하지 않았습니다. 사용자가 오프라인 상태가되면 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; 
     } 
    } 
} 
+0

스크롤 패널의 행 헤더를 사용하여 동일한 것을 얻는 것이 더 쉽다는 것을 알게되었습니다. – MadProgrammer

+0

JList를 사용합니다. – camickr

+0

scrollpane 행 헤더를 어떻게 처리 할 수 ​​있습니까? link please –

답변

관련 문제