单击按钮时在文本区域中显示类输出

时间:2014-12-21 05:34:59

标签: java swing button jframe

我有一个项目,我有点卡住了。单击按钮时,我有一个JFrame JTextArea和一个按钮,它将在框架的文本区域中打开测试类。所以我的问题是,如何在框架的文本区域中打开测试类?

我已经尝试了getText(test()),但它说无法找到符号方法测试。

这是我的JFrame代码:

package sunday;

/**
 *
 * @author warwick
 */
public class sunday1 extends javax.swing.JFrame {
/**
 * Creates new form sunday1
 */
public sunday1() {
    initComponents();
}

/**
 * This method is called from within the constructor to initialize the form.
 * WARNING: Do NOT modify this code. The content of this method is always
 * regenerated by the Form Editor.
 */
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">                          
private void initComponents() {

    jScrollPane1 = new javax.swing.JScrollPane();
    TxtField = new javax.swing.JTextArea();
    btnOpen = new javax.swing.JToggleButton();

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

    TxtField.setColumns(20);
    TxtField.setRows(5);
    jScrollPane1.setViewportView(TxtField);

    btnOpen.setText("Open");
    btnOpen.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            btnOpenActionPerformed(evt);
        }
    });

    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
    getContentPane().setLayout(layout);
    layout.setHorizontalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
            .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
            .addComponent(btnOpen)
            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
            .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 225, javax.swing.GroupLayout.PREFERRED_SIZE)
            .addGap(57, 57, 57))
    );
    layout.setVerticalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(layout.createSequentialGroup()
            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(layout.createSequentialGroup()
                    .addGap(52, 52, 52)
                    .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 212, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGroup(layout.createSequentialGroup()
                    .addGap(101, 101, 101)
                    .addComponent(btnOpen)))
            .addContainerGap(36, Short.MAX_VALUE))
    );

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

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

    TxtField.setText(test());
}                                       

这是我的类代码,必须显示在框架的文本区域中。

public class sundaytest {
  private void test() {
    System.out.println("Hello World");
  }  
}

1 个答案:

答案 0 :(得分:1)

这里有一些问题。

    找不到
  1. test(),因为尝试执行它的类中没有测试函数。 (sunday1)

  2. sundaytest中的test()是私有的,这意味着sundaytest之外的任何类都不能执行它。

  3. test()是一个void方法,它不会返回TxtField.setText(String str)正在寻找的String对象。

  4. 要解决这些问题,您可以执行以下操作:

    一个。修改你的方法btnOpenActionPerformed来设置字符串而不使用像这样的单独的类(sundaytest):

    TxtField.setText("Text to be set");
    

    或者

    湾修改sundaytest中的test()方法,使其可以从sunday1访问,并在执行时返回一个String对象。

    public String test() {
        return "Hello World";
    }
    

    修改btnOpenActionPerformed以通过sundaytest访问此功能。

    TxtField.setText(new sundaytest().test());