1

こんにちは、新しい友人です。2 つのクラスでコードを記述します。1 つのクラスでは、jtextarea と、ボタンをクリックするとボタンを宣言します。テキストは分割され、jlabel に表示されますが、ここで問題は、テキストが jtext で記述されていることです。エリアとボタンも機能しますが、jlabel フレームを開くと何も表示されません ここに私のコードがあります 最初のクラス

import java.awt.Container;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextArea;

public class Try extends JFrame {

    JTextArea text;
    String string;
   public Try(){

 super("survey");
          Container container=getContentPane();
          container.setLayout(new FlowLayout());
          text=new JTextArea();
                text.setLineWrap(true);
        text.setWrapStyleWord(true);
        text.setPreferredSize(new Dimension(350,150));
           string=text.getText();
         JButton showDialogBtn = new JButton("Add Text");
        container.add(text);
        container.add( showDialogBtn);

       showDialogBtn.addActionListener(new ActionListener() {
            @Override
         public void actionPerformed(ActionEvent e) {
     jlabel l=new jlabel();
     l.setSize(700,700);
   l.setVisible(true);          
            }
      });


   }  





    public static void main(String[] args) {
        // TODO code application logic here
        Try t=new Try();
        t.setSize(400,500);
  t.setVisible(true);
    }

    String getArray()
  {
  return  string ;
           }

}

しかし、jlabel クラスである 2 番目のクラスは、必要な結果を表示していません。

import java.awt.Container;
import java.awt.Font;
import javax.swing.*;
 class jlabel extends JFrame {
 Try t=new Try();
   public jlabel(){
          JFrame frame=new JFrame("jlabel");
          JPanel jp1=new JPanel();
   String string=t.getArray();
    String[] labelStrings = string.split(" \\s*");   
     for (String labelString : labelStrings)
    {
      // create JLabels and add
      JLabel label = new JLabel(labelString);
      jp1.add(label);
      frame.add(jp1);

    }



 }
 }

返信をお待ちしております よろしくお願いします

4

2 に答える 2

1

最初のクラスはまともですが、「jLabel」クラスには非常に多くのバグがありました。動作するものは以下を参照してください。

jlabel クラスの問題の概要:

  • 別の Try オブジェクトがインスタンス化され、このインスタンスが使用されました
  • すでにサブクラス化していたにもかかわらず、新しい JFrame を作成していました。
  • レイアウトマネージャーはありません。

等々...

import javax.swing.BoxLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

class Label extends JFrame {

    public Label(String string) {
        super("jlabel");
        JPanel jp1 = new JPanel();
        jp1.setLayout(new BoxLayout(jp1, BoxLayout.Y_AXIS));
        String[] labelStrings = string.split(" \\s*");
        for (String labelString : labelStrings) {
            // create JLabels and add
            JLabel label = new JLabel(labelString);
            jp1.add(label);
        }
        getContentPane().add(jp1);
    }
}

Try クラスで、次のように初期化します。

Label l = new Label(text.getText());
于 2012-09-19T20:44:38.167 に答える
0

問題は、actionPerformed() メソッドの外で getText() を呼び出すことです。このメソッドはボタンが押されたときに実行されるため、テキストを取得する場合は、actionPerformed() 内で getText() メソッドを呼び出す必要があります。

あなたのコードは実行されるとすぐにテキストを取得し、何も見つけられません! これが JLabel に貼り付けられたものです。

于 2012-09-19T20:38:38.453 に答える