标签: joptionpane

JOptionPane.showInputDialog的用户输入验证

我刚刚学习JAVA并且在代码的这个特定部分遇到了一些麻烦.我搜索了几个网站并尝试了许多不同的方法,但似乎无法弄清楚如何实现一个适用于不同可能性的方法.

int playerChoice = Integer.parseInt(JOptionPane.showInputDialog(null, "Enter number for corresponding selection:\n"
                + " (1) - ROCK\n (2) - PAPER\n (3) - SCISSORS\n")) - 1;
Run Code Online (Sandbox Code Playgroud)

我想我需要进行某种类型的验证,即使用户没有输入以及不是1,2或3的输入.任何人都有关于如何实现这一点的建议?

我尝试了一个while循环,一个if语句在将输入转换为整数之前检查null,以及几个不同类型的if else if方法.

提前致谢!

java validation joptionpane

5
推荐指数
2
解决办法
2万
查看次数

验证输入对话框

嗨,我觉得相当愚蠢,因为我应该能做到这一点,但我做不到!我也在网上和我的书中检查过,这么简单的事情没什么(或者我可以看到它).

我想做的是向用户提供JOptionPane.showInputDialog(null,...并检查

  1. 它不是空白
  2. 它不包含数字或特殊字符,例如/> <.!"£$%^&*()

如果它没有通过任何这些测试重新显示框,所以他们必须这样做,欧元这是一个简单的事情,但我只是无法解决它:(

我的愚蠢请怜悯!在此先感谢任何帮助它是合适的!

java swing joptionpane

5
推荐指数
1
解决办法
1万
查看次数

如何在GUI中出现另一个JOptionPane时解除一个JOptionPane

正如你从我上面的主题中看到的
那样,我想知道如何解雇由于另一个JOptionPane而变得无关紧要的JOptionPane,并且由于某些原因,用户没有通过单击ok按钮解除第一个问题(对于例).

我在其他网站上看到过一些类似问题的软件,人们建议简单地做:

JOptionPane.getRootFrame().dispose();  
Run Code Online (Sandbox Code Playgroud)

但是我如何为每个JOptionPane存储一个引用,并且只能解雇那个想要的引用.
谢谢

编辑:
代码示例:

package Gui;

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

/**
 *
 * @author 
 */
public class JpanelMainView extends javax.swing.JPanel {

    /** Creates new form JpanelMainView */
    public JpanelMainView() {
        initComponents();
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() …
Run Code Online (Sandbox Code Playgroud)

java swing joptionpane

5
推荐指数
1
解决办法
8032
查看次数

JOptionPane每行有多个按钮?

我如何在每一行显示JOptionPane.showinputDialog()多个JButtons?我不是在谈论Yes,No,Cancel按钮,但多个自定义标记JButtons,它显示的内容区域JOptionPane.showinputDialog

所以我需要从按钮中获取按钮的值JOptionPane.

java swing jbutton joptionpane

5
推荐指数
2
解决办法
2万
查看次数

JOptionPane在不同的行上有多个输入

我想创建一个JOptionPane允许用户选择要连接的IP地址和端口的.它的结构应如此,

IP地址:[textfield here]

港口:[textfield here]

取消确定

标签应该左对齐,文本字段也应该左对齐.我无法在这里对故事板进行真正的建模,但基本上文本字段不应该错位,即使标签和文本字段之间有空格也是如此.

每个标签和文本字段对应位于单独的行上,取消确定按钮应与文本框下方的右侧对齐.

在代码中有没有办法做到这一点?

java swing joptionpane layout-manager

5
推荐指数
1
解决办法
2万
查看次数

JOptionPane.showMessageDialog等到单击确定?

这可能是一个非常简单的事情,我忽略了,但我似乎无法弄明白.

我有以下更新JTable的方法:

class TableModel extends AbstractTableModel {    
        public void updateTable() {
            try {
                // update table here
             ...
    } catch (NullPointerException npe) {
                isOpenDialog = true;
                JOptionPane.showMessageDialog(null, "No active shares found on this IP!");
                isOpenDialog = false;
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

但是,我不希望isOpenDialog在按下消息对话框上的OK按钮之前将boolean设置为false,因为如果用户按下enter键,它将激活KeyListener文本字段上的事件并且如果设置了它将再次触发整个代码块到false.

KeyListener代码的一部分如下所示:

public class KeyReleased implements KeyListener {
        ...

    @Override
    public void keyReleased(KeyEvent ke) {
        if(txtIPField.getText().matches(IPADDRESS_PATTERN)) {
            validIP = true;
        } else {
            validIP = false;
        }

        if (ke.getKeyCode() == KeyEvent.VK_ENTER) {
            if (validIP …
Run Code Online (Sandbox Code Playgroud)

java swing jtable keylistener joptionpane

5
推荐指数
2
解决办法
4万
查看次数

如何使用Java Swing JOptionPane确认对话框进行单元测试

我有一个java swing应用程序,期望用户选择YESNO来自JOptionPane.showConfirmDialog

由于JOptionPane停止线程并等待用户输入,因此我的代码不能自动测试.

无论如何我可以以编程方式解决这个问题吗?或模拟是或否?

在我的测试中,出现一个确认对话框,我必须按下是或否按钮.

更新

我发现了一个很棒的选择.

我创建了一个OptionPane基本上所有不同类型的消息所需的接口.然后我创建了一个默认实现,只是降级到JOptionPane的静态方法.然后我创建了一个YesMockOptionPane,它基本上为所有确认消息返回YES_OPTION,并为所有NO_OPTIONS创建一个NoMockOptionPane.

这是代码:

<<usage>>

class Foo {
  OptionPane optionPane = new DefaultOptionPane();

  public void someMethod() {
    if (optionPane.showConfirmDialog(null, "choose yes or no", "Please confirm", 
                    JOptionPane.YES_NO_OPTION) != JOptionPane.YES_OPTION)
                return;

        //User pressed yes
  }    

  public void setOptionPane(OptionPane o) {
    this.optionPane = o;
  }
}

//Snippet of the interface
public interface OptionPane {

   int showConfirmDialog(Component parentComponent,
          Object message, String title, int optionType);
}

public class DefaultOptionPane implements OptionPane {
  @Override …
Run Code Online (Sandbox Code Playgroud)

java swing unit-testing joptionpane

5
推荐指数
1
解决办法
3959
查看次数

当焦点被JOptionPane窃取时,JButton保持按下状态

我是Swing的新手,我有一个情况.我正在设计一个应用程序,它根据xml文件输入(元数据)动态呈现GUI组件.现在,我的大多数JTextField都将InputVerifier设置为它们,以进行验证.只要输入无效,输入验证程序就会弹出JOptionPane.

现在,如果用户输入无效数据并向前移动并单击面板上的按钮,则会弹出一个对话框,用户必须对其进行响应.但在此之后,按钮也不会绘制以释放状态.它仍然看起来像被按下但实际上它不是.由于整个代码非常混乱,我将问题场景放在下面的代码中: -

我应该怎么做才能让JButton看起来没穿#?如果逻辑也被解释,我将不胜感激.

提前致谢.

package test;

import java.awt.BorderLayout;
import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.InputVerifier;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JTextField;

public class VerifierTest extends JFrame {

    private static final long serialVersionUID = 1L;

    public VerifierTest() {
        JTextField tf;
        tf = new JTextField("TextField1");

        getContentPane().add(tf, BorderLayout.NORTH);
        tf.setInputVerifier(new PassVerifier());

        final JButton b = new JButton("Button");
        b.setVerifyInputWhenFocusTarget(true);
        getContentPane().add(b, BorderLayout.EAST);
        b.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                if (b.hasFocus())
                    System.out.println("Button clicked");
            }
        }); …
Run Code Online (Sandbox Code Playgroud)

java swing jtextfield joptionpane inputverifier

5
推荐指数
1
解决办法
1856
查看次数

简单的Java GUI作为弹出窗口和下拉菜单

我从来没有在java中编写GUI.这次我也可以跳过它并args用作UI(用户界面).但我想知道是否有一种简单的方法可以创建一个小的GUI来让用户选择其中一个选项.换句话说,要实现askUser()用户可以从下拉菜单中选择并按"确定"的功能.我花了一些时间学习这个主题,但甚至不确定我知道这个任务需要哪种类型的GUI.JFrame的?JPanel的?JMenu的?谢谢.

这是所需功能的一个例子.

package trygui;

public class Main {

    public static void main(String[] args) {
        String[] choices = new String[]{"cats", "dogs"};
        int choice = askUser(choices);
        System.out.println("selected: " + choices[choice]);
    }

    static int askUser(String[] choices) {
        // create pop-up dialog
        return 0;
    }
}
Run Code Online (Sandbox Code Playgroud)

更新:我使用Netbeans,如果这可以有所作为.

java swing popup joptionpane jcombobox

5
推荐指数
1
解决办法
3万
查看次数

设置Nimbus LookandFeel后,Java Swing JOptionPane是和否按钮的字体大小不同

由于在默认的LookAndFeel中字体大小太小,我使用几行代码将其设置为Nimbus,而我的JOptionPane显示具有不同大小的YesNo按钮. 仍然非常小,而" 否"设置为我指定的大小.有谁知道为什么或如何解决它?

public static void setUIFont(Font a){
    FontUIResource ax=new FontUIResource(a);
    javax.swing.UIManager.put("OptionPane.messageFont", ax);
    javax.swing.UIManager.put("OptionPane.buttonFont", ax);
    javax.swing.UIManager.put("OptionPane.Font", ax);
    javax.swing.UIManager.put("InternalFrame.titleFont", ax);
    javax.swing.UIManager.put("TextField.font", ax);
    javax.swing.UIManager.put("ComboBox.font", ax);
}
Run Code Online (Sandbox Code Playgroud)

...

UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel"); 

class UseNimBus extends SwingInvoker{
    public void run(){
        JDialog.setDefaultLookAndFeelDecorated(true);
        setUIFont(new FontUIResource(new Font(ufont, Font.PLAIN, 20)));
    }
}
(new UseNimBus()).execute();// just invokeLater()
Run Code Online (Sandbox Code Playgroud)

以下行显示选项窗格,但它具有" 是"和" 否",具有不同的大小.这是正常还是只是我的问题?

inputValuex=JOptionPane.showConfirmDialog(
    myWin, "Are you exiting?", "You clicked X", JOptionPane.YES_NO_OPTION);
Run Code Online (Sandbox Code Playgroud)

更新

还是行不通.我试过使用代码

javax.swing.UIManager.put("OptionPane.isYesLast", true);

更改按钮的位置,但它没有任何效果.我只是想看看如何设置这些值,如布尔值.

另外,我甚至列出了UIManager.getDefaults() …

java swing look-and-feel joptionpane nimbus

5
推荐指数
1
解决办法
1851
查看次数