java - 默认情况下,如何使 netbeans 中的 swing 控件 protected 或公开?

标签 java netbeans netbeans-7

我的第一个问题是 - 我们能否在 netbeans 中公开或保护 swing 控件(如 textfieldcombobox)?当我们将组件拖放到框架中时,代码会自动生成,并且组件默认是私有(private)的。我们不能在其他类中使用它们。

第二个是 - 有没有其他方法可以在其他类中使用一个框架的组件?

例如 - 在一帧中,我们只有一个 textfield、一个 button 和一个 label。我们希望将标签的文本设置为与单击按钮时在文本字段中写入的文本相同。但代码必须写在其他类中。

package javaapplication10;

import javax.swing.JLabel;
public class NewJFrame extends javax.swing.JFrame {

    public NewJFrame() {
        initComponents();
    }


    private void initComponents() {

        jButton1 = new javax.swing.JButton();
        jTextField1 = new javax.swing.JTextField();
        label1 = new java.awt.Label();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        jButton1.setText("jButton1");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        label1.setText("label1");

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                    .addGroup(layout.createSequentialGroup()
                        .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 76, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
                        .addGap(100, 100, 100)
                        .addComponent(label1, javax.swing.GroupLayout.PREFERRED_SIZE, 67, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 31, Short.MAX_VALUE)
                .addComponent(jButton1)
                .addGap(129, 129, 129))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(134, 134, 134)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jButton1))
                .addGap(56, 56, 56)
                .addComponent(label1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(67, Short.MAX_VALUE))
        );

        pack();
    }

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

        label1.setText(jTextField1.getText());
    }
    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(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }



        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new NewJFrame().setVisible(true);
            }
        });
    }

    private javax.swing.JButton jButton1;
    private javax.swing.JTextField jTextField1;
    private java.awt.Label label1;

}

我只写过

label1.setText(jTextField1.getText());

但这是在同一个类(class)。我希望将这一行写在其他类(class)中。 但是由于 textfieldlabellprivate 我们不能在其他类中引用它们。

我该怎么做?

我这样做是为了学习。

请帮忙。

最佳答案

右键点击组件->属性->代码:

enter image description here

点击变量修饰符,选择你想要的。

有没有其他方法可以在其他类中使用一个框架的组件?

是的,

  • 1) 类名.变量名
  • 2) 创建类的对象,通过对象调用变量。

关于java - 默认情况下,如何使 netbeans 中的 swing 控件 protected 或公开?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15717292/

相关文章:

c++ - 无法在 netbeans 中运行 C++ CMake 项目

java - 如何检查 JFileChooser 是否已选择文件?

java - 如何设置从网络摄像头捕获图像的计时器?

java - 使用 NetBeans 生成的 WebService 类将 ServiceAuthHeader 添加到 SOAP 消息

java - Netbean 的 Swing Extensions Library 和 javax.swing 有区别吗?

java - Spring Boot - 如何在开发过程中禁用@Cacheable?

java - 根据输入找到最小的整数

java - Android Studio 错误 - 错误 :java. util.concurrent.ExecutionException : com. android.tools.aapt2.Aapt2Exception:AAPT 错误

java - Spring MVC - 如何在缺少参数时返回 404

java - Web 服务客户端从 getMyWSPort 获取 NullPointerException