2014-11-02 53 views
2

我正在創建Java Swing應用程序。我想添加標籤到JTextField。當我添加標籤時,我可以搜索另一個要添加的標籤。和堆棧溢出一樣。如何將字標記添加到JTextField中?

是否有任何jar文件要做到這一點?請告訴我,如果有其他解決方案。

example image tag http://imageshack.com/a/img674/925/kQRLxw.jpg

+1

我會用保存Jbutton將,而不是一個JTextField對於這種thiing的一個JPanel。 – 2014-11-02 03:18:41

+0

ok thanx如何添加該關閉按鈕並使用jtextfield搜索另一個標籤? – heshjse 2014-11-02 03:21:55

+0

面板有2個標籤一個用於文本另一個用於關閉按鈕 – 2014-11-02 03:22:39

回答

5

基本上你需要在添加2 jlables到一個面板,然後將該面板添加到另一個面板。

我創建了一個名爲「Tagpanel」的自定義面板,並將新的TagPanel添加到面板。

這就是它的樣子。你應該對你的情況使用適當的佈局。

enter image description here

示例代碼

public class Example extends JFrame { 

    static Example example; 
    JPanel panel; 

    String tagarr[] = {"swing", "java", "c++", "awt"}; 

    public Example() { 
     setSize(new Dimension(500, 80)); 
     GridBagLayout layout = new GridBagLayout(); 
     GridBagConstraints c = new GridBagConstraints(); 
     setLayout(layout); 
     c.gridx = 0; 
     c.gridy = 0; 

     panel = new JPanel(); 
     panel.setPreferredSize(new Dimension(400, 20)); 
     panel.setLayout(new FlowLayout(1, 2, 2)); 
     panel.setBackground(Color.white); 
     panel.setBorder(javax.swing.BorderFactory.createLineBorder(Color.magenta)); 
     add(panel,c); 
     JTextField t = new JTextField("type here", 10); 
     t.setBorder(null); 
     t.addKeyListener(new java.awt.event.KeyAdapter() { 
      public void keyReleased(java.awt.event.KeyEvent evt) { 
       tagcheck(evt); 
      } 

      private void tagcheck(KeyEvent evt) { 
       String s = t.getText(); 
       if (s.length() > 0) { 
        for (String tag : tagarr) { 
         if (s.equals(tag)) { 
          TagPanel tagp1 = new TagPanel(s); 
          panel.add(tagp1, panel.getComponentCount() - 1); 
          t.setText(""); 
          repaint(); 
          revalidate(); 
         } 
        } 
       } 
      } 
     }); 

     panel.add(t); 
     setVisible(true); 
    } 

    public void removecomp(JPanel p) { 
     panel.remove(p); 
     repaint(); 
     revalidate(); 
    } 

    public static void main(String[] args) { 
     example = new Example(); 
    } 
} 

TagPanel.java

public class TagPanel extends JPanel { 

    public TagPanel(String text) { 
     JLabel textlable = new JLabel(text); 
     JLabel close = new JLabel("X"); 
     close.setOpaque(true); 
     close.setBackground(new Color(123, 123, 123)); 
     textlable.setOpaque(true); 
     textlable.setBackground(new Color(0,185,203)); 
     textlable.setForeground(Color.white); 
     setLayout(new BorderLayout()); 
     close.addMouseListener(new java.awt.event.MouseAdapter() { 
      public void mousePressed(java.awt.event.MouseEvent evt) { 
       Example.example.removecomp(TagPanel.this); 
      } 
     }); 
     add(close, BorderLayout.EAST); 
     add(textlable, BorderLayout.WEST); 
    } 

} 
相關問題