2017-03-27 3 views
0

次のコードがあります。私はjoptionpaneで私のパネルにtextAreaを追加しましたが、ボックスのフレームサイズが小さすぎてtextAreaがそれに収まりません。では、どうすればjoptionpaneボックスを大きくすることができますか?joptionpaneボックスで設定する

JPanel p = new JPanel(new BorderLayout(5,5)); 

     JPanel labels = new JPanel(new GridLayout(0,1,2,2)); 
     labels.add(new JLabel("Name", SwingConstants.RIGHT)); 
     labels.add(new JLabel("Description", SwingConstants.RIGHT)); 
     p.add(labels, BorderLayout.WEST); 


     JPanel controls = new JPanel(new GridLayout(0,1,4,4)); 
     JTextField name = new JTextField(); 
     controls.add(name); 
     JTextArea description = new JTextArea(); 
    //  description.addAncestorListener(new RequestFocusListener(false)); 
     controls.add(description); 
     p.add(controls, BorderLayout.CENTER); 

     int result = JOptionPane.showConfirmDialog(null, p, "Create Atomic Action", JOptionPane.OK_CANCEL_OPTION); 

     if(result == JOptionPane.OK_OPTION) 
     { 
      System.out.println("Yes press Name"+name.getText()+" "+description.getText()); 
     }else 
      System.out.println("Cancel press"); 
+0

あなたは[、最小限の完全かつ検証可能な例]を投稿することができますにtextArea – dpassy

+0

にsetPreferedSizeのmthodを使用してみてください(https://stackoverflow.com/help/mcve)? – ahoxha

+0

@Salman私は、実行可能にするために余分なコードを追加することなく、コピー&ペーストできるクラスを意味しました。 – ahoxha

答えて

1

推奨サイズを設定する以外に@dpassyが示唆したように、あなたがより多くのテキストを追加します(ダイアログボックスに表示することができます以上)と一番下までスクロールすることができるように、私は、ScrollPaneコンポーネントを追加しました。また、レイアウトをGridLayoutからBorderLayoutに変更し、TextBoxがスペースを埋めるのに不必要に成長しないようにしました。

package test; 

import java.awt.BorderLayout; 
import java.awt.Dimension; 
import java.awt.GridLayout; 

import javax.swing.JLabel; 
import javax.swing.JOptionPane; 
import javax.swing.JPanel; 
import javax.swing.JScrollPane; 
import javax.swing.JTextArea; 
import javax.swing.JTextField; 
import javax.swing.SwingConstants; 

public class Test { 

    public static void main(String[] args) { 
     JPanel p = new JPanel(new BorderLayout(5, 5)); 

     JPanel labels = new JPanel(new BorderLayout()); 
     labels.add(new JLabel("Name", SwingConstants.RIGHT),BorderLayout.NORTH); 
     labels.add(new JLabel("Description", SwingConstants.RIGHT), BorderLayout.CENTER); 
     p.add(labels, BorderLayout.WEST); 

     JPanel controls = new JPanel(new BorderLayout()); 
     JTextField name = new JTextField(); 
     controls.add(name, BorderLayout.NORTH); 
     JTextArea description = new JTextArea(); 
     JScrollPane sp = new JScrollPane(description); 
     // description.addAncestorListener(new RequestFocusListener(false)); 
     sp.setPreferredSize(new Dimension(400, 100)); 
     controls.add(sp, BorderLayout.CENTER); 
     p.add(controls, BorderLayout.CENTER); 

     JOptionPane.showConfirmDialog(null, p, "Create Atomic Action", JOptionPane.OK_CANCEL_OPTION); 
    } 
} 

はその結果、このダイアログが表示されます:

enter image description here

をそして、あなたはTextArea内のテキストを追加するとき、それはあまりにもスクロールバーが表示されます。

enter image description here

+0

私はコードを編集しました。今問題は何ですか?私はそれを実行し、それに比例して 'JOptionPane'ダイアログを成長させます。 – ahoxha

+0

何もありません、ありがとう – Salman

関連する問題