我需要创建一个包含4个选项的自定义对话框,但据我所知,只有一个有三个选项.这是我如何制作一个带有3个选项的选项窗格:
Frame refFrame = DialogUtils.getReferenceFrame();
///TODO:
/// - Use DialogUtils
int option = JOptionPane.showOptionDialog(refFrame,
msg,
rsc.str("918"),
JOptionPane.YES_NO_CANCEL_OPTION,
JOptionPane.INFORMATION_MESSAGE,
DialogUtils.INFO_ICON,
options,
options[0]);
Run Code Online (Sandbox Code Playgroud)
但我找不到YES_NO_CANCEL_OPTION的某种开放式替代品.有没有办法让JOptionPane允许四种选择?
我试图让一个JOptionPane得到一个输入并将其分配给一个int,但我遇到了一些变量类型的问题.
我正在尝试这样的事情:
Int ans = (Integer) JOptionPane.showInputDialog(frame,
"Text",
JOptionPane.INFORMATION_MESSAGE,
null,
null,
"[sample text to help input]");
Run Code Online (Sandbox Code Playgroud)
但我得到:
Exception in thread "main" java.lang.ClassCastException: java.lang.String cannot
be cast to java.lang.Integer
Run Code Online (Sandbox Code Playgroud)
这听起来很合乎逻辑,我想不出另一种方法来实现这一点.
提前致谢
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String connectionUrl = "jdbc:sqlserver://"+hostName.getText()+";" +
"databaseName="+dbName.getText()+";user="+userName.getText()+";password="+password.getText()+";";
Connection con = DriverManager.getConnection(connectionUrl);
if(con!=null){JOptionPane.showMessageDialog(this, "Connection Established");}
} catch (SQLException e) {
JOptionPane.showMessageDialog(this, e);
//System.out.println("SQL Exception: "+ e.toString());
} catch (ClassNotFoundException cE) {
//System.out.println("Class Not Found Exception: "+ cE.toString());
JOptionPane.showMessageDialog(this, cE.toString());
}
Run Code Online (Sandbox Code Playgroud)
出现错误时,它会显示一个长的JOptionPane消息框,该消息框长于计算机屏幕的宽度.如何将e.toString()分成两个或多个部分.
我想知道是否可以在Java中将OK取消按钮更改为自定义字符串?我有
JOptionPane.showConfirmDialog(message, title, JOptionPane.OK_CANCEL_OPTION);
Run Code Online (Sandbox Code Playgroud)
此时,该按钮将显示"确定"和"取消".是否可以更改文本?例如"A"和"B"或日文文本?
谢谢
我有一个关于按下inputDialoguebox的取消按钮的问题.我之前问过类似的问题,所以如果我好像重复自己,我会道歉.
我遇到的主要问题是,无论我是否按下取消,我的代码都会执行,即使我没有添加任何输入,也会进行套接字连接.
为什么会发生这种情况,我该如何避免这种情况?
String input = "";
try
{
InetAddress host = InetAddress.getLocalHost();
String hostAddress = host.getHostAddress();
//setting label to host number so as to know what number to use
labHostName.setText("(" + hostAddress + ")");
input = JOptionPane.showInputDialog(null,"Please enter host name to access server(dotted number only)...see number on frame", "name", JOptionPane.INFORMATION_MESSAGE);
if(input != null && "".equals(input))//input != null && input.equals(""))
{
throw new EmptyFieldsException();
}
else if(input != null && !input.equals(hostAddress))
{
throw new HostAddressException();
}
else
{
clientSocket = …Run Code Online (Sandbox Code Playgroud) JOptionPane除非满足用户输入字段的条件,否则有人可以告诉我是否有一种方便的方法可以防止在单击"确定"时关闭?
或者我别无选择只能使用JFrame?
到目前为止我的验证逻辑.似乎不起作用,因为按钮是由于某种原因一次性可点击...
final JDialog dialog3 = new JDialog(OmniGUI.getFrame(), "Create new Node - id:" + newNodeID);
dialog3.setContentPane(theOPane);
dialog3.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE);
theOPane.addPropertyChangeListener(new PropertyChangeListener(){
public void propertyChange(PropertyChangeEvent e) {
if(e.getSource() == theOPane){
String val = (String) ((JOptionPane) e.getSource()).getValue();
if(val=="Create"){
System.out.println("Checking content");
if(!valid){
System.out.println("closing the window");
dialog3.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
dialog3.removeAll();
dialog3.dispatchEvent(new WindowEvent(dialog3, WindowEvent.WINDOW_CLOSING));
}
}
}
}
});
dialog3.setLocation(p);
dialog3.pack();
dialog3.setVisible(true);
Run Code Online (Sandbox Code Playgroud) 我想将YES和NO改为同意/不同意.我该怎么办?
int reply = JOptionPane.showConfirmDialog(null,
"Are you want to continue the process?",
"YES?",
JOptionPane.YES_NO_OPTION);
Run Code Online (Sandbox Code Playgroud) 我有自己的Dialog弹出两个文本字段,两个JLabel和一个"ok"JButton.弹出窗口是一个登录窗口.窗口工作完美我只是想知道我如何能够添加"取消"JButton,因此用户可以取消登录.
这是我的窗口代码:
public Hashtable<String, String> login(JFrame frame) {
Hashtable<String, String> logininformation = new Hashtable<String, String>();
JPanel panel = new JPanel(new BorderLayout(5, 5));
JPanel label = new JPanel(new GridLayout(0, 1, 2, 2));
label.add(new JLabel("E-Mail", SwingConstants.RIGHT));
label.add(new JLabel("Password", SwingConstants.RIGHT));
panel.add(label, BorderLayout.WEST);
JPanel controls = new JPanel(new GridLayout(0, 1, 2, 2));
JTextField username = new JTextField();
controls.add(username);
JPasswordField password = new JPasswordField();
controls.add(password);
panel.add(controls, BorderLayout.CENTER);
JOptionPane.showMessageDialog(frame, panel, "login", JOptionPane.QUESTION_MESSAGE);
logininformation.put("user", username.getText());
logininformation.put("pass", new String(password.getPassword()));
return logininformation;
}
Run Code Online (Sandbox Code Playgroud)
如果需要,请点击登录窗口的屏幕截图:

如果你点击右下角的"x",它也会关闭.但我想要取消JButton,如果它很容易.
你能改变JOptionPane文本的字体和大小吗?我尝试过它,只有当我在那个特定的java类上"运行文件"时它才有用.如果您启动整个项目,它不会更改字体.我只想改变一个特定的JOptionPane而不是全部.
这是代码:
UIManager.put("OptionPane.messageFont", new FontUIResource(new Font(
"Arial", Font.BOLD, 18)));
JOptionPane.showMessageDialog(null,"MESSAGE","ERROR",JOptionPane.WARNING_MESSAGE);
Run Code Online (Sandbox Code Playgroud) 我有一个复选框,当用户选择它时,应生成一个带有更多信息的对话框,并在用户做出反应时做一些事情.我的代码基本上看起来像这样:
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 ×10
joptionpane ×10
swing ×8
jbutton ×2
fonts ×1
int ×1
jcheckbox ×1
jpanel ×1
jtextfield ×1
netbeans ×1
newline ×1
sockets ×1
user-input ×1