2012-05-28 3 views
2

레이블이 표시되지 않는 이유는 무엇입니까?목록에서 항목을 선택한 후 패널에 레이블 설정

package javaapplication4; 


import java.awt.Color; 
import java.awt.Container; 
import java.awt.FlowLayout; 
import java.awt.GridBagLayout; 
import javax.swing.GroupLayout; 
import javax.swing.GroupLayout.Alignment; 
import javax.swing.JButton; 
import javax.swing.JEditorPane; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 

public class settingPanel extends javax.swing.JPanel { 
    static JPanel con = new JPanel(); 
    static JFrame frame = new JFrame(); 
    JLabel jLabel1 = new JLabel(); 
    public JEditorPane htmlvi = new JEditorPane(); 

    /** Creates new form settingPanel */ 
    public settingPanel() { 
     initComponents(); 
    } 

    /** 
    * This method is called from within the constructor to initialize the form. 
    * WARNING: Do NOT modify this code. The content of this method is always 
    * regenerated by the Form Editor. 
    */ 
    @SuppressWarnings("unchecked") 
    // <editor-fold defaultstate="collapsed" desc="Generated Code"> 
    private void initComponents() { 

     jTabbedPane1 = new javax.swing.JTabbedPane(); 
     jPanel1 = new javax.swing.JPanel(); 
     jScrollPane1 = new javax.swing.JScrollPane(); 
     jList1 = new javax.swing.JList(); 

     jList1.setModel(new javax.swing.AbstractListModel() { 
      String[] strings = { "Item 1", "Item 2", "Item 3", "Item 4", 
        "Item 5" }; 

      public int getSize() { 
       return strings.length; 
      } 

      public Object getElementAt(int i) { 
       return strings[i]; 
      } 
     }); 
     jList1.addListSelectionListener(new javax.swing.event.ListSelectionListener() { 
      public void valueChanged(javax.swing.event.ListSelectionEvent evt) { 
       jList1ValueChanged(evt); 
      } 
     }); 
     jScrollPane1.setViewportView(jList1); 

     javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(
       jPanel1); 
     jPanel1.setLayout(jPanel1Layout); 
     jPanel1Layout.setHorizontalGroup(jPanel1Layout.createParallelGroup(
       javax.swing.GroupLayout.Alignment.LEADING).addGroup(
       jPanel1Layout 
         .createSequentialGroup() 
         .addComponent(jScrollPane1, 
           javax.swing.GroupLayout.PREFERRED_SIZE, 70, 
           javax.swing.GroupLayout.PREFERRED_SIZE) 
         .addContainerGap(325, Short.MAX_VALUE))); 
     jPanel1Layout.setVerticalGroup(jPanel1Layout.createParallelGroup(
       javax.swing.GroupLayout.Alignment.LEADING).addComponent(
       jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 272, 
       Short.MAX_VALUE)); 

     jTabbedPane1.addTab("tab1", jPanel1); 

     javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); 
     this.setLayout(layout); 
     layout.setHorizontalGroup(layout.createParallelGroup(
       javax.swing.GroupLayout.Alignment.LEADING).addComponent(
       jTabbedPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 400, 
       Short.MAX_VALUE)); 
     layout.setVerticalGroup(layout.createParallelGroup(
       javax.swing.GroupLayout.Alignment.LEADING).addComponent(
       jTabbedPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 300, 
       Short.MAX_VALUE)); 
    }// </editor-fold> 

    private void addpanel() { 
     JPanel pnl = new JPanel(); 
     pnl.setOpaque(false); 
     pnl.setLayout(new GridBagLayout()); 
     pnl.add(new JButton()); 
     pnl.setVisible(true); 
     jPanel1.setLocation(10, 30); 
     jPanel1.add(pnl); 
    } 

    private void jList1ValueChanged(javax.swing.event.ListSelectionEvent evt) { 

     JLabel write = new JLabel(); 

     // if(evt.getValueIsAdjusting()){ 
     String read = "<html><h2>" + jList1.getSelectedValue().toString() 
       + "<UL>USB"; 
     addpanel(); 

     jPanel1.add(write); 

    } 

    // Variables declaration - do not modify 
    private javax.swing.JList jList1; 
    public static javax.swing.JPanel jPanel1; 
    private javax.swing.JScrollPane jScrollPane1; 
    private javax.swing.JTabbedPane jTabbedPane1; 

    // End of variables declaration 
    public static void main(String args[]) { 

     frame.add(new settingPanel()); 
     // jPanel2.setLayout(new GridBagLayout()); 
     // jPanel2.add(new JButton()); 
     // jPanel2.setVisible(false); 
     frame.pack(); 
     frame.setVisible(true); 
     frame.setDefaultCloseOperation(3); 
    } 
} 

답변

4

당신은 그 구성 요소를 표시 할 GroupLayout를 사용 jPanel1로의 JLabel을 추가합니다. GroupLayout은 각 구성 요소가 수직 및 수평 그룹에 배치되어야하는 위치를 알아야하며 알려지지 않았기 때문에 새 레이블을 어디에 둘 것인지 알지 못합니다.

선택 사항이 변경 될 때마다 GUI에 새 레이블을 추가하는 것이 최종 목표가 아닌지 의심 스럽습니다. GUI가 초기화 될 때 기본 텍스트가있는 고유 레이블을 추가하고 선택이 변경 될 때이 레이블의 텍스트를 변경해야합니다.

+0

+1 완전하고 완벽한 답변입니다. 정말로 추가 할 아무것도! – GingerHead