2016-10-25 4 views
-1

JOptionPaneを使用して2人のユーザーが入力した数値を読み込み、その2つの数値の合計と商品を表示する必要があります。このプログラムのスイングでボックスを作成する方法を理解できません。JOptionPaneを使用して数式に2つの数値を入力するにはどうすればよいですか?

+0

[mcve]を投稿して間違っていると、そのコードで何が起こっていると思われるのかをすぐに確認してください。 – MasterBlaster

答えて

0

これを行うには、2つの方法があります。

  1. は、カスタムパネルを作成し、JOptionPane
  2. にパネルを追加JOptionPaneがここ

ためのパネルを構築してみましょう例です。両方とも:

import java.awt.*; 
import javax.swing.*; 
import javax.swing.border.*; 

public class OptionPanePanel 
{ 
    private static void createAndShowUI() 
    { 
     JFrame frame = new JFrame(); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setLocationRelativeTo(null); 
     frame.setVisible(true); 

     // Build a custom panel 

     JPanel panel = new JPanel(new GridLayout(2, 2)); 
     panel.setBackground(Color.RED); 
     panel.add(new JLabel("First Name")); 
     JTextField firstName = new JTextField(10); 
//  firstName.addAncestorListener(new RequestFocusListener(false)); 
     panel.add(firstName); 
     panel.add(new JLabel("Last Name")); 
     JTextField lastName = new JTextField(10); 
     panel.add(lastName); 

     int result = JOptionPane.showConfirmDialog(
      frame, // use your JFrame here 
      panel, 
      "Use a Panel", 
      JOptionPane.YES_NO_OPTION, 
      JOptionPane.PLAIN_MESSAGE); 

     if(result == JOptionPane.YES_OPTION) 
     { 
      System.out.println(firstName.getText() + " : " + lastName.getText()); 
     } 
     else 
     { 
      System.out.println("Canceled"); 
     } 

     // Let Option Pane build the panel for you 

     JTextField firstName2 = new JTextField(10); 
//  firstName2.addAncestorListener(new RequestFocusListener()); 
     Object[] msg = {"First Name:", firstName2, "Last Name:", lastName}; 

     result = JOptionPane.showConfirmDialog(
      frame, 
      msg, 
      "Use default layout", 
      JOptionPane.OK_CANCEL_OPTION, 
      JOptionPane.PLAIN_MESSAGE); 

     if (result == JOptionPane.YES_OPTION) 
     { 
      System.out.println(firstName.getText() + " : " + lastName.getText()); 
     } 
     else 
     { 
      System.out.println("Canceled"); 
     } 
    } 

    public static void main(String[] args) 
    { 
     EventQueue.invokeLater(new Runnable() 
     { 
      public void run() 
      { 
       createAndShowUI(); 
      } 
     }); 
    } 
} 

注:

上記のコードを実行すると、JOptionPaneのボタンにフォーカスが移動します。

フォーカスをテキストフィールドに表示する場合は、例のようにRequest Focus Listener(クラスをダウンロードした後)を使用する必要があります。

関連する問題