2012-01-13 19 views
21

Obecnie tworzę aplikację java.Tworzenie okna PopUp w java

Chcę pokazać nowe okno, które zawiera obszar tekstowy i przycisk.

Czy masz jakieś pomysły?

+4

Może 'JOptionPane.showInputDialog (null," To jest wiadomość "," To jest domyślny tekst ")'? – fireshadow52

+0

Proszę oznaczyć odpowiedź, aby to pytanie zostało rozwiązane. – Ungeheuer

Odpowiedz

12

Hmm to było trochę czasu, ale z tego co pamiętam ...
Jeśli chcesz okna niestandardowe można po prostu zrobić nową ramkę i sprawiają, że pojawiają się tak jak byś z okna głównego. Java ma również wielką bibliotekę dialogowe, w którym można zapoznać się tutaj:

How to Make Dialogs

, które mogą być w stanie podać funkcjonalność szukasz z dużo mniejszym wysiłkiem.

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!"); 

Jeśli nie dbać, aby ograniczyć wybór użytkownika, można użyć formy metodą showInputDialog które ma mniej argumentów lub określić null dla tablicy obiektów. W Java wyglądu, zastępując null dla wyników możliwości w dialogu, który ma pole tekstowe i wygląda tak:

+0

Myślę, że chcę zrobić nową ramkę, możesz mi pokazać, jak to zrobić thb przy okazji? – Carlo

+0

Powyższy przykład jest tak jasny i zwięzły, jak tylko mogę pokazać, jak to zrobić. Jeśli chcesz go dostosować poza tym przykładem, spójrz na dokumentację Java Docs. – Prediluted

27

tę samą odpowiedź: JOptionpane z przykładu :)

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 ... trochę na granicy odpowiedzi na pytanie, czyż nie ;-) W każdym razie, a) zapoznaj się z konwencjami nazewnictwa java i trzymaj się ich b) nigdy nie wykonuj ręcznego sortowania/lokalizacji komponentów, to jest wyłączne zadanie odpowiedniego menedżera LayoutManager c) updateComponentTree nie jest potrzebne – kleopatra

Powiązane problemy