添加选项卡替换选项卡(Java)

尼克·鲍尔斯

我是Java的新手,需要一点帮助。话虽这么说,我肯定我的代码是草率的。我将NetBeans用于GUI生成器,并且正在学习此过程中的技巧。我在这里有一个SSCC,但是因为即时通讯使用NetBeans相当长。

public class tabtest extends javax.swing.JFrame {

public tabtest() {
    initComponents();
}

@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">                          
private void initComponents() {

    addTabDialog = new javax.swing.JDialog();
    titleTextBox = new javax.swing.JTextField();
    jLabel1 = new javax.swing.JLabel();
    addTabConfirmButton = new javax.swing.JButton();
    jLabel2 = new javax.swing.JLabel();
    tabPane = new javax.swing.JTabbedPane();
    addTabButton = new javax.swing.JButton();

    addTabDialog.setBounds(new java.awt.Rectangle(0, 0, 400, 400));

    titleTextBox.setText("New Tab");

    jLabel1.setText("Tab Title");

    addTabConfirmButton.setText("Confirm");
    addTabConfirmButton.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            addTabConfirmButtonActionPerformed(evt);
        }
    });

    javax.swing.GroupLayout addTabDialogLayout = new javax.swing.GroupLayout(addTabDialog.getContentPane());
    addTabDialog.getContentPane().setLayout(addTabDialogLayout);
    addTabDialogLayout.setHorizontalGroup(
        addTabDialogLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(addTabDialogLayout.createSequentialGroup()
            .addGap(23, 23, 23)
            .addComponent(jLabel1)
            .addGap(18, 18, 18)
            .addGroup(addTabDialogLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addComponent(addTabConfirmButton)
                .addComponent(titleTextBox, javax.swing.GroupLayout.PREFERRED_SIZE, 96, javax.swing.GroupLayout.PREFERRED_SIZE))
            .addContainerGap(211, Short.MAX_VALUE))
    );
    addTabDialogLayout.setVerticalGroup(
        addTabDialogLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(addTabDialogLayout.createSequentialGroup()
            .addGap(77, 77, 77)
            .addGroup(addTabDialogLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                .addComponent(titleTextBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addComponent(jLabel1))
            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 196, Short.MAX_VALUE)
            .addComponent(addTabConfirmButton)
            .addGap(84, 84, 84))
    );

    jLabel2.setText("This is a new Tab");

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

    addTabButton.setText("add new tab");
    addTabButton.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            addTabButtonActionPerformed(evt);
        }
    });
    tabPane.addTab("+", addTabButton);

    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
    getContentPane().setLayout(layout);
    layout.setHorizontalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(layout.createSequentialGroup()
            .addGap(40, 40, 40)
            .addComponent(tabPane, javax.swing.GroupLayout.PREFERRED_SIZE, 326, javax.swing.GroupLayout.PREFERRED_SIZE)
            .addContainerGap(34, Short.MAX_VALUE))
    );
    layout.setVerticalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(layout.createSequentialGroup()
            .addGap(89, 89, 89)
            .addComponent(tabPane, javax.swing.GroupLayout.PREFERRED_SIZE, 178, javax.swing.GroupLayout.PREFERRED_SIZE)
            .addContainerGap(33, Short.MAX_VALUE))
    );

    pack();
}// </editor-fold>                        

private void addTabButtonActionPerformed(java.awt.event.ActionEvent evt) {                                             
    addTabDialog.setLocationRelativeTo(null);
    addTabDialog.setVisible(true);
}                                            

private void addTabConfirmButtonActionPerformed(java.awt.event.ActionEvent evt) {                                                    

    tabPane.addTab(titleTextBox.getText(),jLabel2);
    tabPane.setSelectedIndex(tabPane.getTabCount()-1);
    addTabDialog.setVisible(false);

}                                                   

public static void main(String args[]) {
   java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
            new tabtest().setVisible(true);
        }
    });
}
// Variables declaration - do not modify                     
private javax.swing.JButton addTabButton;
private javax.swing.JButton addTabConfirmButton;
private javax.swing.JDialog addTabDialog;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JTabbedPane tabPane;
private javax.swing.JTextField titleTextBox;
// End of variables declaration                   

我需要帮助的主要部分是这一部分,其余的只是构建GUI

private void addTabButtonActionPerformed(java.awt.event.ActionEvent evt){                                             
    addTabDialog.setLocationRelativeTo(null);
    addTabDialog.setVisible(true);
}                                            

private void addTabConfirmButtonActionPerformed(java.awt.event.ActionEvent evt){                                                    

    tabPane.addTab(titleTextBox.getText(),jLabel2);
    tabPane.setSelectedIndex(tabPane.getTabCount()-1);
    addTabDialog.setVisible(false);

}

抱歉,代码难免...无论如何,如果运行此代码,您将看到在尝试添加2个选项卡后,第二个选项卡将替换您尝试添加的第一个选项卡。我究竟做错了什么?我敢肯定它很简单,但是任何帮助将不胜感激!谢谢你!

麦可

通过再次添加带有该组件的新选项卡,实际上并没有添加新的选项卡对象。如果您将代码更改为如下所示

private void addTabConfirmButtonActionPerformed(
        java.awt.event.ActionEvent evt) {

    tabPane.addTab(titleTextBox.getText(), new JLabel("This is my new tab"));
    tabPane.setSelectedIndex(tabPane.getTabCount() - 1);
    addTabDialog.setVisible(false);

}

它应该按预期工作。

原因是,第二个参数Component是您要显示的内容。因为您一直在添加相同的组件,(请阅读:不是组件的COPY),库仅将输入的新标题与该ONE JLabel关联,并绘制TabbedPane来反映这种情况。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

添加选项卡替换选项卡(Java)

来自分类Dev

用空格替换选项卡

来自分类Dev

Java Swing选项卡式窗格添加选项卡异常

来自分类Dev

用sed中的单个选项卡替换选项卡

来自分类Dev

Python:替换选项卡中的双引号

来自分类Dev

在LightTable中用空格查找和替换选项卡

来自分类Dev

如何扩展JTabbedPane使其始终具有“添加选项卡”选项卡?

来自分类Dev

在项目/设置选项卡中添加选项卡[Redmine]

来自分类Dev

将添加选项卡添加到TemplateRole

来自分类Dev

动态添加选项卡,单击按钮

来自分类Dev

扩展LeftAndMain和添加选项卡

来自分类Dev

评论后添加附加选项卡

来自分类Dev

迭代嵌套字典的键并添加选项卡

来自分类Dev

在单击按钮上添加选项卡

来自分类Dev

使用PagerSlidingTabStrips单击选项卡时,切换选项卡不起作用

来自分类Dev

使用PagerSlidingTabStrips单击选项卡时,切换选项卡不起作用

来自分类Dev

增加选项卡布局中选项卡的宽度

来自分类Dev

使用Sed在shell脚本中用Control-A替换选项卡

来自分类Dev

如何防止Qt Creator 2.4.1用空格替换选项卡?

来自分类Dev

如何在Linux GNOME终端中替换选项卡?

来自分类Dev

为什么TextMate不使用空格替换选项卡?

来自分类Dev

jq过滤器从@tsv内部删除或替换选项卡

来自分类Dev

防止Visual Studio Code用保存的空格替换选项卡

来自分类Dev

在功能区UI中切换选项卡

来自分类Dev

UITabBarController切换选项卡时变黑

来自分类Dev

切换选项卡时,BottomNavigationView标题隐藏

来自分类Dev

使用AHK在ConEmu中切换选项卡

来自分类Dev

用vimscript切换选项卡?

来自分类Dev

UITabBarController切换选项卡时变黑

Related 相关文章

热门标签

归档