Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将JTextArea添加到Closable选项卡窗格_Java_Swing_Layout Manager_Jtextarea_Jtabbedpane - Fatal编程技术网

Java 如何将JTextArea添加到Closable选项卡窗格

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

我想将带有Textarea的Scrollpane添加到Tabbedpane。我为此编写了代码。但是,它显示了一个小的Textarea,而不是整个框架。我用createAction()方法编写了此代码。我想要带有close按钮的Tabbedpane并将Scrollpane添加到Tabbedpane。请检查一下。谢谢

我的代码:

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行/文档的末尾时,滚动窗格不工作/显示。请检查一次。