【问题标题】:custom dialog java swing自定义对话框 java swing
【发布时间】:2011-06-13 01:39:45
【问题描述】:

我正在尝试编写一个自定义 SwingUtilities.InvokeandWait 事件,其中包含 Textarea 和 Button ,因此一旦用户将数据粘贴到 Textarea 并单击按钮。到那时控制应该不会下降,但无法使其正常工作。

我发现最好的方法是使用对话框消息,所以现在我尝试在 InputDialogBox 中添加更大的 TextArea 而不是单行文本字段。 我还尝试创建一个自定义对话框,但 InvokeandWait 甚至只是触发对话框并转到我不想要的下一行。

我需要专家的帮助

  1. 在 inputdialog 中添加文本区域而不是单行文本字段的方法 (或)
  2. 处理自定义对话框的方法,直到我按下其中的确定按钮,然后控制转到程序的下一行。

【问题讨论】:

    标签: java swing jdialog


    【解决方案1】:

    创建自定义对话框的一个简单示例 -

    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);
        }
    

    【讨论】:

      【解决方案2】:

      JDialog 就像一个 JFrame。您可以添加任何您想要的组件。

      另外,您不使用 invokeAndWait()。只需将对话框设置为模态,它就会按照您想要的方式工作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-21
        • 1970-01-01
        • 2018-08-30
        • 2012-08-13
        • 2013-01-06
        • 2012-08-27
        相关资源
        最近更新 更多