2012-01-13 44 views
21

Tôi hiện đang phát triển một ứng dụng java.Cách đặt cửa sổ PopUp trong java

Tôi muốn hiển thị Cửa sổ mới có chứa vùng văn bản và nút.

Bạn có ý tưởng nào không?

+4

Có lẽ 'JOptionPane.showInputDialog (null," Đây là thông báo "," Đây là văn bản mặc định ")'? – fireshadow52

+0

Vui lòng đánh dấu câu trả lời để câu hỏi này được giải quyết. – Ungeheuer

Trả lời

12

Hmm nó đã được một chút nhưng từ những gì tôi nhớ ...
Nếu bạn muốn một cửa sổ tùy chỉnh, bạn chỉ có thể tạo một khung mới và làm cho nó hiển thị giống như bạn làm với cửa sổ chính. Java cũng có một thư viện thoại tuyệt vời mà bạn có thể kiểm tra ở đây:

How to Make Dialogs

Đó có thể cung cấp cho bạn các chức năng bạn đang tìm kiếm với nỗ lực ít hơn một toàn bộ rất nhiều.

Object[] possibilities = {"ham", "spam", "yam"}; 
String s = (String)JOptionPane.showInputDialog(
        frame, 
        "Complete the sentence:\n" 
        + "\"Green eggs and...\"", 
        "Customized Dialog", 
        JOptionPane.PLAIN_MESSAGE, 
        icon, 
        possibilities, 
        "ham"); 

//If a string was returned, say so. 
if ((s != null) && (s.length() > 0)) { 
    setLabel("Green eggs and... " + s + "!"); 
    return; 
} 

//If you're here, the return value was null/empty. 
setLabel("Come on, finish the sentence!"); 

Nếu bạn không quan tâm để hạn chế sự lựa chọn của người dùng, bạn có thể sử dụng một hình thức của phương pháp showInputDialog mà có lẽ ít hơn hoặc chỉ định null cho các mảng của các đối tượng. Trong giao diện Java và cảm nhận, thay null cho khả năng kết quả trong một hộp thoại mà có một trường văn bản và trông như thế này:

+0

Tôi nghĩ tôi muốn làm Khung mới u Có thể chỉ cho tôi cách làm điều đó thx btw? – Carlo

+0

Ví dụ tôi đưa ra ở trên là về rõ ràng và súc tích như tôi có thể nhận được để chỉ cho bạn cách thực hiện. Nếu bạn muốn tùy chỉnh nó vượt quá ví dụ, hãy xem Tài liệu Java. – Prediluted

27

Câu trả lời giống nhau: JOptionpane với một ví dụ :)

package experiments; 

import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JOptionPane; 

public class CreateDialogFromOptionPane { 

    public static void main(final String[] args) { 
     final JFrame parent = new JFrame(); 
     JButton button = new JButton(); 

     button.setText("Click me to show dialog!"); 
     parent.add(button); 
     parent.pack(); 
     parent.setVisible(true); 

     button.addActionListener(new java.awt.event.ActionListener() { 
      @Override 
      public void actionPerformed(java.awt.event.ActionEvent evt) { 
       String name = JOptionPane.showInputDialog(parent, 
         "What is your name?", null); 
      } 
     }); 
    } 
} 

enter image description here

0
public class JSONPage { 
    Logger log = Logger.getLogger("com.prodapt.autotest.gui.design.EditTestData"); 


    public static final JFrame JSONFrame = new JFrame(); 
    public final JPanel jPanel = new JPanel(); 

    JLabel IdLabel = new JLabel("JSON ID*"); 
    JLabel DataLabel = new JLabel("JSON Data*"); 
    JFormattedTextField JId = new JFormattedTextField("Auto Generated"); 
    JTextArea JData = new JTextArea(); 
    JButton Cancel = new JButton("Cancel"); 
    JButton Add = new JButton("Add"); 

    public void JsonPage() { 

     JSONFrame.getContentPane().add(jPanel); 
     JSONFrame.add(jPanel); 
     JSONFrame.setSize(400, 250); 
     JSONFrame.setResizable(false); 
     JSONFrame.setVisible(false); 
     JSONFrame.setTitle("Add JSON Data"); 
     JSONFrame.setLocationRelativeTo(null); 
     jPanel.setLayout(null); 

     JData.setWrapStyleWord(true); 
     JId.setEditable(false); 

     IdLabel.setBounds(20, 30, 120, 25); 
     JId.setBounds(100, 30, 120, 25); 
     DataLabel.setBounds(20, 60, 120, 25); 
     JData.setBounds(100, 60, 250, 75); 
     Cancel.setBounds(80, 170, 80, 30); 
     Add.setBounds(280, 170, 50, 30); 

     jPanel.add(IdLabel); 
     jPanel.add(JId); 
     jPanel.add(DataLabel); 
     jPanel.add(JData); 
     jPanel.add(Cancel); 
     jPanel.add(Add); 

     SwingUtilities.updateComponentTreeUI(JSONFrame); 

     Cancel.addActionListener(new ActionListener() { 
      @SuppressWarnings("deprecation") 
      @Override 
      public void actionPerformed(ActionEvent e) { 
       JData.setText(""); 
       JSONFrame.hide(); 
       TestCasePage.testCaseFrame.show(); 
      } 
     }); 

     Add.addActionListener(new ActionListener() { 
      @SuppressWarnings("deprecation") 
      @Override 
      public void actionPerformed(ActionEvent e) { 
       try { 
        PreparedStatement pStatement = DAOHelper.getInstance() 
          .createJSON(
            ConnectionClass.getInstance() 
              .getConnection()); 
        pStatement.setString(1, null); 
        if (JData.getText().toString().isEmpty()) { 
         JOptionPane.showMessageDialog(JSONFrame, 
           "Must Enter JSON Path"); 
        } else { 
         // System.out.println(eleSelectBy); 
         pStatement.setString(2, JData.getText()); 
         pStatement.executeUpdate(); 
         JOptionPane.showMessageDialog(JSONFrame, "!! Added !!"); 
         log.info("JSON Path Added"+JData); 
         JData.setText(""); 
         JSONFrame.hide(); 
        } 

       } catch (SQLException e1) { 
        JData.setText(""); 
        log.info("Error in Adding JSON Path"); 
        e1.printStackTrace(); 
       } 
      } 
     }); 
    } 

} 
+7

hmm ... một chút trên đường biên giới trả lời câu hỏi, phải không ;-) Dù sao, a) hãy tìm hiểu quy ước đặt tên java và gắn bó với chúng b) không bao giờ làm bất kỳ kích thước thủ công/định vị thành phần nào, đó là nhiệm vụ của một LayoutManager phù hợp c) updateComponentTree không cần thiết – kleopatra

0

Thử sử dụng JOptionPane hoặc Swt Shell.

Các vấn đề liên quan