2014-11-20 10 views
0

Tabbedpane.I에 TextArea와 함께 Scrollpane을 추가하고 싶습니다. 그 코드를 작성했습니다. 전체 프레임이 아닌 작은 텍스트 영역을 보여줍니다. createAction() Method.I에서이 코드를 작성합니다. 원합니다. tabbedpane에 close 버튼을 추가하고 Scrollpane을 tabbedpane에 추가하십시오. 한번 확인하십시오. 감사합니다.클로즈 가능 TabbedPane에 JTextArea를 추가하는 방법

내 코드 :

public class ClosableTabbedpane extends javax.swing.JFrame { 
JTextArea tx; 
int i=0; 
public ClosableTabbedpane() { 

    initComponents(); 

} 

private static JPanel getTitlePanel(final JTabbedPane tabbedPane, final JPanel panel, String title) { 
    JPanel titlePanel = new JPanel(new FlowLayout(FlowLayout.LEFT, 0, 0)); 
    titlePanel.setOpaque(false); 
    JLabel titleLbl = new JLabel(title); 
    titleLbl.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 5)); 
    titlePanel.add(titleLbl); 
    JButton closeButton = new JButton("x"); 

    closeButton.addMouseListener(new MouseAdapter() { 
     @Override 
     public void mouseClicked(MouseEvent e) { 
      tabbedPane.remove(panel); 
     } 
    }); 
    titlePanel.add(closeButton); 
    return titlePanel; 
} 

@SuppressWarnings("unchecked")       
private void initComponents() { 

    tabbedPane = new javax.swing.JTabbedPane(); 
    jMenuBar1 = new javax.swing.JMenuBar(); 
    jMenu1 = new javax.swing.JMenu(); 
    create = new javax.swing.JMenuItem(); 

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); 

    jMenu1.setText("File"); 

    create.setText("Create"); 
    create.addActionListener(new java.awt.event.ActionListener() { 
     @Override 
     public void actionPerformed(java.awt.event.ActionEvent evt) { 
      createActionPerformed(evt); 
     } 
    }); 
    jMenu1.add(create); 

    jMenuBar1.add(jMenu1); 

    setJMenuBar(jMenuBar1); 

    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); 
    getContentPane().setLayout(layout); 
    layout.setHorizontalGroup(
     layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
     .addComponent(tabbedPane, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 400, Short.MAX_VALUE) 
    ); 
    layout.setVerticalGroup(
     layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
     .addComponent(tabbedPane, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 331, Short.MAX_VALUE) 
    ); 

    pack(); 
}      

private void createActionPerformed(java.awt.event.ActionEvent evt) {          
    i++; 
    tx = new JTextArea(); 
    JPanel panel = new JPanel(); 
    panel.setBounds(400,400,400,400); 
    tx.setFont(new java.awt.Font("Miriam Fixed", 0, 13)); 
    JScrollPane scrollpane=new JScrollPane(tx); 
    panel.add(scrollpane); 
    panel.setOpaque(false); 
    tabbedPane.add(panel); 
    tabbedPane.setTabComponentAt(tabbedPane.indexOfComponent(panel), getTitlePanel(tabbedPane, panel, "Doc"+i)); 
}          

public static void main(String args[]) { 
    try { 
     for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) { 
      if ("Nimbus".equals(info.getName())) { 
       javax.swing.UIManager.setLookAndFeel(info.getClassName()); 
       break; 
      } 
     } 
    } catch (ClassNotFoundException ex) { 
     java.util.logging.Logger.getLogger(ClosableTabbedpane.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
    } catch (InstantiationException ex) { 
     java.util.logging.Logger.getLogger(ClosableTabbedpane.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
    } catch (IllegalAccessException ex) { 
     java.util.logging.Logger.getLogger(ClosableTabbedpane.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
    } catch (javax.swing.UnsupportedLookAndFeelException ex) { 
     java.util.logging.Logger.getLogger(ClosableTabbedpane.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
    } 

    java.awt.EventQueue.invokeLater(new Runnable() { 
     @Override 
     public void run() { 
      new ClosableTabbedpane().setVisible(true); 
     } 
    }); 
}    
private javax.swing.JMenuItem create; 
private javax.swing.JMenu jMenu1; 
private javax.swing.JMenu jMenu2; 
private javax.swing.JMenuBar jMenuBar1; 
private javax.swing.JMenuItem open; 
private javax.swing.JTabbedPane tabbedPane;    
} 
+0

'panel.setBounds (400400400400)이,'자바 GUI를 같은 다른 OS ', 화면 크기, 화면 해상도 등의 작업을해야한다, 그들은 완벽한 레이아웃을 픽셀에 도움이되지 않습니다. 대신 레이아웃 관리자 또는 [조합] (http://stackoverflow.com/a/5630271/418556)과 [공백] 레이아웃 채우기 및 테두리 (http://stackoverflow.com/a/17874718/)를 사용하십시오. 418556). –

+0

setBounds() 메서드를 제거하면 동일한 출력이 표시됩니다. 수정 한 코드를 수정하십시오. – user3912886

+0

위의 응용 프로그램에 대한 해결책을 제공해 주시는 분은 아무도 없습니다. – user3912886

답변

1

는, 텍스트 영역의 크기를 제안 만들 때 필요한 행과 열의 수를 지정합니다. E.G.

tx = new JTextArea(3,40); 
+0

응용 프로그램을 실행할 때 프레임 크기가 작고 내 프레임을 최대화합니다. 텍스트 영역 크기가 확장되지 않습니다. 지정된 행과 열이 고정되어 있습니다. – user3912886

+0

'프레임의 크기가 작습니다. '프레임을'pack()'할 필요가 있습니다. –

+0

전 tx = new JTextArea (170,170)를 썼습니다; Texarea가 완벽하게 추가되었지만 Scrollpane이 적용되지 않았습니다. Textarea 줄 끝/문서 스크롤 상자가 작동/표시되지 않습니다. 한 번 확인하십시오. – user3912886