Java 如何将JTextArea添加到Closable选项卡窗格
我想将带有Textarea的Scrollpane添加到Tabbedpane。我为此编写了代码。但是,它显示了一个小的Textarea,而不是整个框架。我用createAction()方法编写了此代码。我想要带有close按钮的Tabbedpane并将Scrollpane添加到Tabbedpane。请检查一下。谢谢 我的代码:Java 如何将JTextArea添加到Closable选项卡窗格,java,swing,layout-manager,jtextarea,jtabbedpane,Java,Swing,Layout Manager,Jtextarea,Jtabbedpane,我想将带有Textarea的Scrollpane添加到Tabbedpane。我为此编写了代码。但是,它显示了一个小的Textarea,而不是整个框架。我用createAction()方法编写了此代码。我想要带有close按钮的Tabbedpane并将Scrollpane添加到Tabbedpane。请检查一下。谢谢 我的代码: public class ClosableTabbedpane extends javax.swing.JFrame { JTextArea tx; int i=0; pu
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;
}
要建议文本区域的大小,请指定创建时所需的行数和列数。例如
tx = new JTextArea(3,40);
panel.setBounds(400400)代码>Java GUI必须在不同的操作系统、屏幕大小、屏幕分辨率等上工作。因此,它们不利于像素完美布局。请改用布局管理器,或与布局填充和边框一起使用。当我删除setBounds()方法时,它会显示相同的输出。请通过修改修改代码。请任何人为上述应用程序提供解决方案。当我运行应用程序时,框架尺寸较小,然后最大化我的框架,textarea大小未扩展。使用给定的行和列固定。帧的大小较小
有必要pack()
帧。我编写了tx=new JTextArea(170170);Texarea添加得很完美,但没有应用滚动窗格。当我越过Textarea行/文档的末尾时,滚动窗格不工作/显示。请检查一次。