问题遵循横向规则; 我自己的答案先于它.
在Oscar Reyes的帮助下,我精心设计了这个解决方案:
import javax.swing.JOptionPane;
import javax.swing.JFrame;
public class MyApp extends JFrame {
public static void main(String [] args) {
new MyApp();
}
public MyApp() {
super("MyApp");
setUndecorated(true);
setVisible(true);
setLocationRelativeTo(null);
String i = JOptionPane.showInputDialog(this, "Enter your name:", getTitle(), JOptionPane.QUESTION_MESSAGE);
if(null != i) {
JOptionPane.showInputDialog(this, "Your name is:", getTitle(), JOptionPane.INFORMATION_MESSAGE, null, null, i.concat(i));
}
dispose();
}
}
Run Code Online (Sandbox Code Playgroud)
注意我也在JOptionPane.showInputDialog中显示输出.这样输出在文本字段中突出显示,因此我只需按CTRL+ C即可将输出复制到系统剪贴板,然后按下ESC以关闭应用程序.
我为我的琐碎应用程序创建了一个简单的GUI.我的应用程序提示单个输入a JOptionPane.showInputDialog,执行计算,然后用a显示单个输出JOptionPane.showMessageDialog.我有时会切换到最大化的浏览器窗口或其他要复制的内容,然后想切换回我的JOptionPane对话框进行粘贴.
我希望我的JOptionPane对话框显示为任务栏上的任务,因此我可以像几乎任何其他正在运行的程序一样切换到它.我更喜欢JOptionPane的简单性,而不是必须创建JFrame,FlowLayout,Icon,JTextField,JButton,ActionListener等等.
JOptionPane.show[whatever]dialog()吗?作为一个宠物项目,我一直在玩将Aero Glass效果集成到我的SWT应用程序中的概念.ŁukaszMilewski有一篇很棒的博客文章,解释了如何实现这一点,这几乎归结为:
final Display display = new Display();
final Shell shell = new Shell(display);
shell.setLayout(new FormLayout());
final MARGINS margins = new MARGINS();
margins.cyTopHeight = -1;
final Composite c = new Composite(shell, SWT.NORMAL);
c.setBackground(new Color(shell.getDisplay(), new RGB(0, 0, 0)));
final FormData fd = new FormData();
fd.top = new FormAttachment(0, 0);
fd.left = new FormAttachment(0, 0);
fd.right = new FormAttachment(100, 0);
fd.bottom = new FormAttachment(100, 0);
c.setLayoutData(fd);
OS.DwmExtendFrameIntoClientArea(shell.handle, margins);
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
Run Code Online (Sandbox Code Playgroud)
这很好用,直到你想添加一个控件.这导致黑色保持透明: …