2011-06-13 5 views
1

Je suis en train d'écrire un événement SwingUtilities.InvokeandWait personnalisé, contenant Textarea et Button, de sorte que l'utilisateur une fois coller les données dans Textarea et cliquez sur le bouton. Jusqu'à ce que le contrôle ne devrait pas descendre, mais ne pouvait pas le faire fonctionner correctement. J'ai trouvé le meilleur moyen d'utiliser un message de boîte de dialogue, alors maintenant j'essaye d'ajouter un TextArea plus grand au lieu d'un textfield simple ligne dans le InputDialogBox. J'ai également essayé de créer une boîte de dialogue custome mais l'InvokeandWait déclenche même juste la boîte de dialogue et va aux lignes suivantes que je ne veux pas.personnalisé dialogue java swing

je besoin d'aide d'experts

  1. moyen d'ajouter une zone de texte au lieu de textfield une seule ligne dans inputdialog (ou)
  2. façon de gérer la boîte de dialogue personnalisée jusqu'à ce que j'appuyez sur le bouton OK dans, puis le contrôle va à la ligne suivante du programme.

Répondre

3

Un JDialog est juste comme un JFrame. Vous pouvez ajouter n'importe quel composant à votre choix.

De même, vous n'utilisez pas invokeAndWait(). Il suffit de rendre le dialogue modal et il fonctionnera comme vous le souhaitez.

3

Un exemple simple pour créer une boîte de dialogue personnalisée -

public class CustomDiaglogBox extends JFrame 
{ 
    // Variables declaration 
    private JLabel jLabel_Item; 
    private JLabel jLabel_Value; 
    public static JButton jButton_Add; 
    private JPanel contentPane; 
    public static JComboBox combo_item; 
    public static JComboBox combo_value; 
    public static JTextField text_Value;   
    public static JTextArea textArea_desc;  
    // End of variables declaration  

    public CustomDiaglogBox() 
    { 
     super(); 
     create(); 
     this.setVisible(true); 
    }  

    private void create() 
    { 
     jLabel_Item = new JLabel(); 
     jLabel_Value = new JLabel(); 
     jLabel_Description = new JLabel(); 
     combo_value = new JComboBox(); 
     text_Value = new JTextField();   
     textArea_desc = new JTextArea(20,20); 
     combo_item = new JComboBox(new String[]{""}); 
     combo_item.setSelectedIndex(-1);  
     jButton_Add = new JButton(); 
     contentPane = (JPanel)this.getContentPane();  
     // 
     // jLabel1 
     // 
     jLabel_Item.setHorizontalAlignment(SwingConstants.LEFT); 
     //jLabel_Item.setForeground(new Color(0, 0, 255)); 
     jLabel_Item.setText("Item"); 
     // 
     // jLabel2 
     // 
     jLabel_Value.setHorizontalAlignment(SwingConstants.LEFT); 
    // jLabel_Value.setForeground(new Color(0, 0, 255)); 
     jLabel_Value.setText("Value"); 

     // jButton1 
     // 
     jButton_Add.setBackground(new Color(204, 204, 204)); 
     jButton_Add.setForeground(new Color(0, 0, 255)); 
     jButton_Add.setText("Add"); 
     jButton_Add.setEnabled(false); 
     jButton_Add.addActionListener(new AddTagWidnowListener());  // 
     // contentPane 
     // 
     contentPane.setLayout(null); 
     contentPane.setBorder(BorderFactory.createEtchedBorder()); 
     contentPane.setBackground(Color.WHITE); 
     addComponent(contentPane, jLabel_Item, 5,10,106,18); 
     addComponent(contentPane, jLabel_Value, 5,47,97,18); 
     addComponent(contentPane, new JLabel("Description"), 5,87,97,18); 
     addComponent(contentPane, combo_item, 110,10,183,22); 
     addComponent(contentPane, combo_value, 110,45,183,22); 
     addComponent(contentPane, new JScrollPane(textArea_desc), 110,75,183,62); 
     addComponent(contentPane, jButton_Add, 150,145,83,28);   
     this.setTitle("MY CUSTOM DIALOG"); 
     this.setLocation(new Point(276, 182)); 
     this.setSize(new Dimension(335, 221)); 
     this.setDefaultCloseOperation(WindowConstants.HIDE_ON_CLOSE); 
     this.setResizable(false); 
    }