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;
}
'panel.setBounds (400400400400)이,'자바 GUI를 같은 다른 OS ', 화면 크기, 화면 해상도 등의 작업을해야한다, 그들은 완벽한 레이아웃을 픽셀에 도움이되지 않습니다. 대신 레이아웃 관리자 또는 [조합] (http://stackoverflow.com/a/5630271/418556)과 [공백] 레이아웃 채우기 및 테두리 (http://stackoverflow.com/a/17874718/)를 사용하십시오. 418556). –
setBounds() 메서드를 제거하면 동일한 출력이 표시됩니다. 수정 한 코드를 수정하십시오. – user3912886
위의 응용 프로그램에 대한 해결책을 제공해 주시는 분은 아무도 없습니다. – user3912886