我想做的就是有一个带有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获取文本或完全替换文本区域的文本字段?我试图避免在可能的情况下进行自定义对话,这似乎"似乎"应该很容易做到的事情?
我正在创造这个 JOptionPane
JOptionPane.showMessageDialog(this, "File was saved", "Save",
JOptionPane.INFORMATION_MESSAGE);
Run Code Online (Sandbox Code Playgroud)
但我的JFrame很大,所以它是可滚动的.当我调用此命令时,会在右下角创建一个窗口,我只能看到标题.我怎么能改变这个位置JOptionPane?
我有一个自定义对话框,从用户收集两个字符串.我在创建对话框时使用OK_CANCEL_OPTION作为选项类型.Evertyhings有效,除非用户单击取消或关闭对话框时单击确定按钮具有相同的效果.
我该如何处理取消和关闭事件?
继承我正在谈论的代码:
JTextField topicTitle = new JTextField();
JTextField topicDesc = new JTextField();
Object[] message = {"Title: ", topicTitle, "Description: ", topicDesc};
JOptionPane pane = new JOptionPane(message, JOptionPane.PLAIN_MESSAGE, JOptionPane.OK_CANCEL_OPTION);
JDialog getTopicDialog = pane.createDialog(null, "New Topic");
getTopicDialog.setVisible(true);
// Do something here when OK is pressed but just dispose when cancel is pressed.
Run Code Online (Sandbox Code Playgroud) 出于某些奇怪的原因,当我尝试使用HTML时JOptionPane,会打印HTML标记而不是HTML格式.
String msg = "Please fix <HTML><BODY BGCOLOR=#FFCCCC>this</BODY></HTML>";
JLabel message = new JLabel(msg);
JOptionPane.showMessageDialog(MyApp.this, message, "Error!", JOptionPane.ERROR_MESSAGE);
Run Code Online (Sandbox Code Playgroud)
输出是:
Please fix <HTML><BODY BGCOLOR=#FFCCCC>this</BODY></HTML>
Run Code Online (Sandbox Code Playgroud) 我需要将JSpinner放在JOptionPane中.这是我尝试过的:
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JSpinner;
import javax.swing.SpinnerNumberModel;
public static void main(String[] args) {
SpinnerNumberModel sModel = new SpinnerNumberModel(0, 0, 30, 1);
JSpinner spinner = new JSpinner(sModel);
JOptionPane.showInputDialog(spinner);
}
Run Code Online (Sandbox Code Playgroud)
结果如下:

如何删除文本框?
我已经看到这可以在其他类型的对话框窗口中使用,例如"showConfirmDialog",其中可以指定按钮的数量及其名称; 但使用"showInputDialog"时是否可以实现相同的功能?我似乎无法在API中找到这种类型的东西.也许我只是错过了它,但任何帮助都表示赞赏.
我正在开发一个项目,我想以编程方式关闭一个通用的JOptionPane(通过不点击任何按钮).当计时器到期时,我想关闭任何可能打开的可能的JOptionPane并将用户踢回我的程序的登录屏幕.我可以很好地踢回用户,但除非我实际点击它上面的按钮,否则JOptionPane仍然存在.
我看过许多没有运气的网站.似乎不可能在JOptionPane的"Red X"上调用doClick()方法,并且使用JOptionpane.getRootFrame().dispose()不起作用.
我想设置一个固定大小的JtextArea内JOptionPane
public static void main(String[] args) {
JTextArea headersTxt = new JTextArea();
for (int i = 0 ; i < 50 ; i ++ ) {
headersTxt.append("test \n") ;
}
JScrollPane scroll = new JScrollPane(headersTxt);
scroll.setSize (300,600) ; // this line silently ignored
int test = JOptionPane.showConfirmDialog(null, scroll,"test", JOptionPane.OK_CANCEL_OPTION) ;
}
Run Code Online (Sandbox Code Playgroud)
但是,上面的代码忽略了 scroll.setSize (300,600) ;
它工作正常,但大小不固定.有什么问题scroll.setSize (300,600) ;?
在我的程序的一部分中,我使用a JOptionPane来询问用户他们是否确定他将做什么.但是我不想让用户每次尝试都要求这样我喜欢使用android中的一些对话框的功能,这些对话框带有"不要再问",但不知道如何在我的程序中实现它,有人在这里你可以帮助我吗?(应该有一个西班牙语StackOverflow)这是我的代码
if (jCheckBox2.isSelected() && jCheckBox1.isSelected()){
JOptionPane.showConfirmDialog(null, "This action can cause problems, want to do it?");
//here must be something to never ask again this
}
Run Code Online (Sandbox Code Playgroud) 所以,我正在制作一个简单的猜谜游戏,当用户按下取消按钮时,程序不会退出循环.这是循环
while(playAgain = true){
int n = JOptionPane.showConfirmDialog(null, fields, "Number guessing game", JOptionPane.CANCEL_OPTION);
if(n == JOptionPane.CANCEL_OPTION){
playAgain = false;
}
int randomNumber = randomNumber();
String guess = input.getText();
compare(randomNumber, Integer.parseInt(guess));
}
Run Code Online (Sandbox Code Playgroud)