标签: joptionpane

当我在statechange上显示一个对话框时,JCheckbox会改变状态两次,如何修复?

我有一个复选框,当用户选择它时,应生成一个带有更多信息的对话框,并在用户做出反应时做一些事情.我的代码基本上看起来像这样:

private void onItemStateChanged(java.awt.event.ItemEvent evt) {
    System.out.println("STATE CHANGED!");//TODO debug code
    if (evt.getStateChange() == ItemEvent.SELECTED) {
        int returnVal = JOptionPane.showConfirmDialog(this, "blablatext");
        if (returnVal == JOptionPane.OK_OPTION) {
            this.field1TF.setText("");
            this.field1TF.setEditable(false);
            this.field2TF.setText("");
            this.filed2TF.setEditable(false);
        }else if(returnVal == JOptionPane.NO_OPTION){
            this.field1TF.setText("");
            this.field1TF.setEditable(false);
            this.field2TF.setText("");
            this.field2TF.setEditable(false);
        }
    } else if(evt.getStateChange() == ItemEvent.DESELECTED){
        this.field1TF.setEditable(true);
        this.field2TF.setEditable(true);
    }
}
Run Code Online (Sandbox Code Playgroud)

我现在的问题是,当我点击它时,我的复选框会一直改变状态两次.它以某种方式与JOptionPane.showConfirmDialog有关,因为如果我对它进行评论,它就会按预期工作.我不知道我应该关心的一些简单的事情,或者我需要做些什么才能得到我想要的反应?(用户点击复选框 - >被问到一个问题 - >选择是/否/取消 - >程序相应地行动)

java swing joptionpane jcheckbox

7
推荐指数
1
解决办法
4248
查看次数

在swing消息框中启用文本突出显示

假设我使用以下代码在我的简单swing应用程序中提示错误消息:

JOptionPane.showMessageDialog(null, message, "Error", JOptionPane.ERROR_MESSAGE);
Run Code Online (Sandbox Code Playgroud)

有什么方法可以让用户突出显示文本部分(用于复制/粘贴目的)?

非常感谢.

java swing joptionpane

7
推荐指数
1
解决办法
3107
查看次数

为 JOptionPane 对话框设置助记符和热键

是否可以为 JOptionPane 对话框中的按钮分配热键和助记符?我希望能够在 JOptionPane 生成的消息对话框中使用选项是、否和取消,按 Y 以点击是按钮,按 N 以点击否按钮并转义以激活转义按钮。同样,在带有“确定”和“取消”按钮的对话框中,我希望能够通过输入和退出来激活它们。

我已经尝试将 JButtons 传递到 JOptionPane 的按钮对象数组中,并且已经设置了助记符。助记符起作用并且按钮在对话框中正确显示,但是,它们在被激活时无法正常工作。最值得注意的是,他们不处理对话框。

将热键和助记符添加到 JOptionPane 对话框的按钮的正确方法是什么?

java hotkeys mnemonics jbutton joptionpane

6
推荐指数
1
解决办法
3551
查看次数

JOptionPane自定义输入

我想做的就是有一个带有JTextArea而不是JTextField的JOptionPane inputDialog.
我尝试将JTextArea放在Message参数中,就像这样

Object[] inputText = new Object[]{new JLabel("Enter Graph Information"),
                                  newJTextArea("",20,10)};
graphInfo=(String)JOptionPane.showInputDialog(null,
                                              inputText,
                                              "Create Graph",
                                              JOptionPane.PLAIN_MESSAGE,
                                              null,
                                              null,
                                              "");
Run Code Online (Sandbox Code Playgroud)

但它仍然在底部有文本字段,我无法从JTextArea获取文本.有没有办法删除原始文本字段并从jtextarea获取文本或完全替换文本区域的文本字段?我试图避免在可能的情况下进行自定义对话,这似乎"似乎"应该很容易做到的事情?

java swing joptionpane

6
推荐指数
1
解决办法
7449
查看次数

如何获得带有三个文本字段的JOptionPane

我想知道我如何从三个输入对话框中做一个messageBox ..

像这样:

JOptionPane.showInputMessageDialog("Enter your FirstName");
JOptionPane.showInputMessageDialog("Enter your MiddleName");
JOptionPane.showInputMessageDialog("Enter your LastName");
Run Code Online (Sandbox Code Playgroud)

但我希望一条消息有三个输入框.

java swing joptionpane

6
推荐指数
1
解决办法
5742
查看次数

如何在JOptionPane上添加文本区域

目前我有一个JOptionPane.单击按钮时,我正在执行以下行.

JOptionPane.showInputDialog(this,"Enter your message","Messages",2);
Run Code Online (Sandbox Code Playgroud)

它会打开一个带有文本框的弹出窗口.此文本框可接受大约40/50个字符.实际上我的要求是在这个文本框中取消长消息(最多300个字符),这样就可以了.所以我们想在这个输入对话框中找到一个文本区域?有可能怎么样?有没有更好的解决方案?提前致谢.

java swing swingx joptionpane

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

创建自定义阻止Java Swing提示

这个问题解决了.

我正在开发基于Java Swing的投影,并且应用程序的外观和感觉是完全自定义的.我们试图在整个程序中保持一致的外观,并且默认的Java对话框窗口不一样.

当前问题需要控制阻止对用户提示的调用.与JOptionPane.showConfirmDialog()类似,在这种情况下,静态调用会生成一个窗口,并停止程序流,直到用户选择一个选项.它还返回选项的值.请注意,GUI本身没有逻辑锁定,但用户无法与其余部分进行交互.

int n = JOptionPane.showConfirmDialog(this,
    "Are you sure?",
    "Confirm"
    JOptionPane.YES_NO_OPTION);
Run Code Online (Sandbox Code Playgroud)

我想使用自定义外观和使用字符串复制此功能.理想情况下,我的代码如下所示:

String result = CustomPrompt.showPrompt(this,
    "Please enter your name", //Text
    "Prompt.",                //Title
    "John Smith");            //Default
Run Code Online (Sandbox Code Playgroud)

这通常用于密码输入,我理解密码的返回类型不同,但这是一个例子.这可以通过在几个类中使用一系列按钮和事件监听器来完成,但代码的可读性和应用程序的可靠性会降低.

框架将通过NetBeans构建并从那里进行定制.我知道Swing中已存在这样的提示,但它的外观和感觉完全不同.

总结的问题是:如何使用自定义框架以阻止方式提示用户输入.

该问题的解决方案如下:

public class PromptForm extends JDialog
{
    transient char[] result;

    public char[] getResult()
    {
        return result;
    }
    public PromptForm(Frame parent)
    {
        super(parent, true);
        initComponents();
    }
    public void prompt()
    {
        this.setVisible(true);
    }
    public static char[] promptForPassword(Frame parent)
    {
        PromptForm pf = new PromptForm(parent);
        pf.prompt();
        return pf.getResult();
    }
    private void jButton1ActionPerformed(java.awt.event.ActionEvent …
Run Code Online (Sandbox Code Playgroud)

java swing jdialog blocking joptionpane

6
推荐指数
1
解决办法
1839
查看次数

自定义JOptionPane对话框

我正在学习java swing.下面的代码是一个catch块,它处理IOException并显示错误消息.

 catch(IOException e)
    {
        System.out.println("IOException");
        JOptionPane.showMessageDialog(null,"File not found",null,
                                    JOptionPane.ERROR_MESSAGE);
    }
Run Code Online (Sandbox Code Playgroud)

我想在catch块中声明和自定义我自己的JOptionPane,如下面的代码:

JOptionPane jop=new JOptionPane();
        jop.setLayout(new BorderLayout());
        JLabel im=new JLabel("Java Technology Dive Log",
                new ImageIcon("images/gwhite.gif"),JLabel.CENTER);
        jop.add(im,BorderLayout.NORTH);
        jop.setVisible(true);
Run Code Online (Sandbox Code Playgroud)

但问题是我不知道如何使它像showMessageDialogue方法那样出现在屏幕上.请帮忙.提前致谢.

java swing jlabel joptionpane imageicon

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

为什么JOptionPane中的JScrollPane没有显示其所有内容?

我试图将组件添加到JPanel,然后将此面板放入JScrollPane,然后将JScrollPane放入JOptionPane.

问题:只添加了19行组件.有一个for循环确定组件的行数,如果将条件计数器更改为19或更小,则将显示所有这些.

这是问题的SSCCE

import java.awt.Dimension;
import javax.swing.GroupLayout;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.SwingConstants;

public class DynamicGroupLayout extends JPanel
{

    JButton addRecordButton;
    JTextField[] FieldsArray;
    JLabel[] LabelsArray;
    GroupLayout layout;
    JScrollPane scrollPane;

    public DynamicGroupLayout()
    {
        addRecordButton = new JButton("add record");
        layout = new GroupLayout(this);
        this.setLayout(layout);
        layout.setAutoCreateGaps(true);
        layout.setAutoCreateContainerGaps(true);

        scrollPane = new JScrollPane(this);
        scrollPane.getVerticalScrollBar().setUnitIncrement(16);
        scrollPane.setPreferredSize(this.getPreferredSize());

        setTextFields();
        showDialog();
    }

    @Override
    public Dimension getPreferredSize()
    {
        return new Dimension(400, 500);
    }

    private void setTextFields()
    {
        int num = 30;  //If …
Run Code Online (Sandbox Code Playgroud)

java swing jscrollpane joptionpane

6
推荐指数
1
解决办法
3878
查看次数

如何在JOptionPane的ok按钮上添加监听器?

如何在单击"确定"按钮时添加监听器JOptionPane.INFORMATION_MESSAGE.

我的JOptionPane是:

JOptionPane.showMessageDialog(null, "Your password is: " + password, "Your Password", JOptionPane.INFORMATION_MESSAGE);
Run Code Online (Sandbox Code Playgroud)

java swing mouseevent joptionpane

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