2017-12-13 4 views
2

私はNetbeansのJava Drag and Dropでメッセンジャーの種類のアプリを作ろうとしています。 私はかなり新しいです。最初はテキスト領域から文字列を取り出し、それを別のパネルのJLabelに表示する必要がありました。私は次のプロセスでそれをやろうとしましたが、うまくいかなかったのです。助けてもらえますか?Javaを使ったメッセンジャーアプリのための動的JLabelsの作成

我々はclientPanelが使用しているレイアウトマネージャ見当がつかないし、あなたの直接の質問はあなたが常にべきであると言うすること以外、unanswerableで尋ねたようにそう、それはそれに削除されているのJLabelを受け入れる方法も知らない
private void sendButtonActionPerformed(java.awt.event.ActionEvent evt) {             
    int i=0; 
    message = messageType.getText(); 
    JLabel messageLabel = new JLabel(); 
    messageLabel.setText(message); 
    messageLabel.setSize(100, 100); 
    messageLabel.setAlignmentX(0); 
    messageLabel.setAlignmentY(0); 
    JOptionPane.showMessageDialog(null, message); 
    clientPanel.add(messageLabel); 
    messageLabel.setVisible(true); 
}  

答えて

1

コンテナ(clientPanel)にrevalidate()を呼び出し、次にコンポーネントを追加または削除した後にrepaint()を呼び出して、コンテナがコンポーネントを再レイアウトしてから再描画するようにします。

このために新しいJLabelを作成することをお勧めします。最初からすべての必要なJLabelを含むGUIを設定し、必要に応じてテキストと空のスペースを与え、プログラム中に既存のJLabelのテキストを設定する方がずっと簡単です。

一方、複数のメッセージをcientPanelに表示する場合は、JList<String>またはフォーカス不可能なJTextAreaの使用を検討してください。

+0

ありがとうございました。私があなたが言及した機能を呼び、それは今働いています。大きなメッセージを送信しようとするとどうなるか考えていましたが、それをラベルに入れようとするとうまくいかないでしょう。だから、JTextAreaはそこで動作するだろうと思う。私はちょうどあなたの提案を試してみました。JTextAreasのためにもうまくいきたいと思います。 – TheNoob

+0

@TheNoob:JTextAreaの場合、 '.setFocusable(false)'を呼び出すことでフォーカスを外してください。また、最後にテキストを追加する場合は、 '.append(String text)'を呼び出すことを検討してください。テキストを自動的に折り返すようにしたい場合は、これに対応するメソッドもあります。 –

+0

私は現在TextAreaを使用しようとしており、setEditable()をfalseに使用しています。また、setBoundsメソッドをsetAllignmentX()とsetAllignmentY()の2つのメソッドに置き換えましたが、JTextAreaが私の画面に表示されません。テキストをラップするために、setText()メソッドを使用しました。 – TheNoob

関連する問題