好的,事情是这样的。目前,我正在使用这个:
String[] choices = {"Rock", "Paper", "Scissors"};
String input = (String) JOptionPane.showInputDialog(null, "Please, make your choice", "Rock Paper Scissors!", JOptionPane.QUESTION_MESSAGE, null, choices, choices[0]);
这正是我所需要的。它创建一个下拉菜单,允许用户选择石头、布或剪刀,然后将其输出到一个字符串中。问题是,它弹出的窗口真的很小,而且在屏幕的中央。我想将它重新调整为970像素乘以300像素,并出现在950像素和0像素的位置。
现在,在你说之前,我已经尝试过使用JFrame来实现这个功能,因为我知道如何获得它的大小和位置。然而,我无法让ActionListener按我希望的方式运行。
public static void main(String args[]) throws IOException
{
JFrame hi = new JFrame("Hi");
hi.setSize(970, 300);
hi.setLocation(950, 0);
System.out.println("Hi");
Picture Hi = new Picture("c:/The Game/Cool.png");
Hi.display();
JButton B = new JButton("Hey There!");
hi.add(B);
int c = Output(hi);
}
public int Output(JFrame b)
{
int j = 0;
j = //CODE NEEDED HERE
return j;
}
@Override
public void actionPerformed(ActionEvent arg0) {
}
因此,这样做的问题是,我需要JFrame在“此处需要代码”部分中弹出,然后在单击按钮时返回某个值,然后关闭JFrame。但是,JFrame 不会等待输出() 函数,它会立即返回 j,该值等于 0。相反,它只是执行操作执行函数中的任何内容。
因此,我正在寻求解决其中任何一个问题的方法。如何重新调整JOptionsPane的大小。showInputDialog()或获取JFrame以在单击按钮时返回int值。
很抱歉,如果解释得很糟糕,我对JOptionPane和JFrames真的很陌生。
JOptionPane
是非常可配置的,它也很好地自包含,吸收了大量重复的、沸腾的板代码并将其隐藏在一个易于使用的包中。
但这并不意味着您必须这样使用它,您可以简单地创建JOptionPane
的实例,它只是JComponent
困难在于将所有的功能连接起来,这样你就可以对按钮做出响应。
请注意,您的示例将对话框放在我的任务栏下(是的,我的对话框位于屏幕顶部),因此我可以告诉您,作为用户,这会让我烦恼!
所以,这个例子基本上把所有的锅炉板代码都封装到一个简单的类/方法中,这样就很容易反复提示用户相同的问题。。。
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import javax.swing.JDialog;
import javax.swing.JOptionPane;
import static javax.swing.JOptionPane.OK_CANCEL_OPTION;
import static javax.swing.JOptionPane.UNINITIALIZED_VALUE;
import static javax.swing.JOptionPane.VALUE_PROPERTY;
import javax.swing.border.EmptyBorder;
public class Test {
public static void main(String[] args) {
String pick = Picker.pick();
System.out.println("You picked " + pick);
System.exit(0);
}
public static class Picker {
public static String pick() {
String[] choices = {"Rock", "Paper", "Scissors"};
JOptionPane pane = new JOptionPane("Please, make your choice", JOptionPane.QUESTION_MESSAGE,
OK_CANCEL_OPTION, null, null, null);
pane.setWantsInput(true);
pane.setSelectionValues(choices);
pane.setInitialSelectionValue(choices[0]);
JDialog dialog = new JDialog();
dialog.setModal(true);
PropertyChangeListener listener = new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent event) {
// Let the defaultCloseOperation handle the closing
// if the user closed the window without selecting a button
// (newValue = null in that case). Otherwise, close the dialog.
if (dialog.isVisible()
&& (event.getPropertyName().equals(VALUE_PROPERTY))
&& event.getNewValue() != null
&& event.getNewValue() != JOptionPane.UNINITIALIZED_VALUE) {
dialog.setVisible(false);
}
}
};
WindowAdapter adapter = new WindowAdapter() {
private boolean gotFocus = false;
public void windowClosing(WindowEvent we) {
pane.setValue(null);
}
public void windowClosed(WindowEvent e) {
dialog.removePropertyChangeListener(listener);
dialog.getContentPane().removeAll();
}
public void windowGainedFocus(WindowEvent we) {
// Once window gets focus, set initial focus
if (!gotFocus) {
pane.selectInitialValue();
gotFocus = true;
}
}
};
dialog.addWindowListener(adapter);
dialog.addWindowFocusListener(adapter);
dialog.addComponentListener(new ComponentAdapter() {
public void componentShown(ComponentEvent ce) {
// reset value to ensure closing works properly
pane.setValue(JOptionPane.UNINITIALIZED_VALUE);
}
});
pane.addPropertyChangeListener(listener);
dialog.add(pane);
//dialog.pack();
//dialog.setLocationRelativeTo(null);
dialog.setSize(970, 300); // This is bad idea, use an EmptyBorder instead
dialog.setLocation(950, 0);
dialog.setVisible(true);
String pick = null;
Object value = pane.getInputValue();
if (value != UNINITIALIZED_VALUE) {
pick = value.toString();
}
return pick;
}
}
}
您在使用< code>JFrame
时遇到问题的原因是,它并不是为了在显示时阻止代码执行而设计的,而< code>JDialog可以,请参阅如何创建对话框了解更多详细信息
问题内容: 您可以更改JOptionPane的字体和文本大小吗?我尝试了它,只有当我在那个特定的Java类上“运行文件”时,它才起作用。如果启动整个项目,则不会更改字体。我只想更改一个特定的JOptionPane而不是全部。 这是代码: 问题答案: 真的很简单。JOption窗格不仅接受字符串,还接受组件。因此,您可以创建一个标签集并设置其字体并将其用作消息。 我不明白为什么以前没人回答这个问题
问题内容: 我在启动时修改UIView高度有麻烦。 我必须使用UIView,我希望其中一个是屏幕尺寸* 70,另一个是填补空白。 这是我所拥有的 和 它在运行时对应用程序没有影响。我使用自动版式,但只有边距限制… 我做错了吗? 问题答案: 干得好。这应该工作。
我已经将添加到中(使用),它很大。我能做点什么让它变小吗?
问题内容: 我在(使用)中添加了一个,它很大。有什么办法可以做得更小? 问题答案: 创建时,你有几个影响结果的选项: 接受和。 指定首选和在构造。 适当时显式调用。 覆盖以动态计算大小。 选择将添加到的容器的布局。需要注意的是默认的布局是,而的是。作为一个具体示例,在构造函数中使用首选值,并在容器中同时使用,以允许动态调整大小。
问题内容: 我的MySQL数据库中的BLOB字段有问题-上传大于1MB的文件时出现错误 这是我尝试过的: 在MySQL查询浏览器中,我运行了一个,结果显示为1048576。 然后,我执行查询之后-这让我33554432预期。 但是,当我重新启动MySQL服务器时,它神奇地回到了1048576。在这里我做错了什么? 额外的问题,是否可以压缩BLOB字段? 问题答案: 通过在文件中的或部分下添加单行来
本文向大家介绍如何更改placeholder的字体颜色和大小?相关面试题,主要包含被问及如何更改placeholder的字体颜色和大小?时的应答技巧和注意事项,需要的朋友参考一下