当远程控制机制激活应用程序中的某些内容时,我们需要将Java应用程序带到前台.
为了得到这个,我们在类的被调用方法中实现了代表我们的应用程序的框架(a的扩展JFrame)在实现之后:
setVisible(true);
toFront();
Run Code Online (Sandbox Code Playgroud)
在Windows XP下,这在第一次调用时工作,第二次只有任务栏中的选项卡闪烁,框架不再出现在前面.Win2k也是如此.在Vista上似乎工作正常.
你有什么想法?
我已经在我的命令行程序中实现了jFileChooser,它的工作正常,只有一个烦人的问题.它似乎在每个窗口下方打开,没有任何警报.事实上,我甚至错过了几次,首先让我相信我已经错误地实施了它.
我已经实现了如下:
System.out.println("Please select the file");
JFileChooser fc = new JFileChooser();
int retValue = fc.showOpenDialog(new JPanel());
if(retValue == JFileChooser.APPROVE_OPTION){
g.inputFile = fc.getSelectedFile();
}else {
System.out.println("Next time select a file.");
System.exit(1);
}
Run Code Online (Sandbox Code Playgroud)
基本上我只想要jFileChooser,以便让用户选择一个文件作为输入文件.这是唯一需要GUI实现的组件,因此如果我可以避免编写GUI,那将会很有帮助.
我是一名经验丰富的Java程序员,但是一个Swing新手所以请耐心等待我.
我希望有一个具有键盘焦点的JPopupWindow.我想响应箭头键,转义(关闭菜单)和回车(调用项目).我必须在菜单中添加一个KeyListener并自己编码所有这些,或者是否有某种"模式"我可以设置来激活这种行为,这似乎应该是标准的.
JPopupMenus上的标准Swing教程部分仅讲述助记符和加速器.我并不特别想要那些.
很难相信这完全违背了JPopupMenu的内容.
什么是获得我想要实现的东西的最佳方法?
有没有办法在OS X上使用Nimbus LAF(外观和感觉),同时仍然能够使用该Meta键进行剪切/复制/粘贴和选择所有操作?
我目前在我的Swing应用程序的main方法中有以下代码,它根据操作系统更改了LAF(OS X的默认值,所有其他的Nimbus):
if (!System.getProperty("os.name", "").startsWith("Mac OS X")) {
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(LicenseInspectorUI.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(LicenseInspectorUI.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(LicenseInspectorUI.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(LicenseInspectorUI.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
}
Run Code Online (Sandbox Code Playgroud)
我这样做是一种解决方法,因为Nimbus会覆盖在OS X上剪切/复制/粘贴和select-all的键盘快捷键(Meta键与Ctrl键).如果只是键盘快捷键没有被覆盖,我宁愿一直使用Nimbus.
我正在使用JDeveloper在java中设计一个表单.我是JDeveloper的新手.在JDeveloper工具中,我没有找到任何选项来直接添加像.Net这样的形式的图像.我不知道如何手动添加图像.有没有其他方法来解决它.所以请帮我解决一下.
当用户右键单击我的JTable时,我正试图获得JPopUpMenu节目.在我的扩展JTable的类中,我调用以下代码:
addMouseListener(new MouseAdapter()
{
@Override
public void mouseReleased(MouseEvent e)
{
rowClicked = rowAtPoint(e.getPoint());
colClicked = columnAtPoint(e.getPoint());
if (e.isPopupTrigger())
{
popUpMenu.show(e.getComponent(), e.getX(), e.getY());
}
}
@Override
public void mouseClicked(MouseEvent e)
{
rowClicked = rowAtPoint(e.getPoint());
colClicked = columnAtPoint(e.getPoint());
if(e.isPopupTrigger())
{
popUpMenu.show(e.getComponent(), e.getX(), e.getY());
}
}
});
Run Code Online (Sandbox Code Playgroud)
每当我右键单击跟踪板,使用鼠标或使用ctrl +右键单击时,if(e.isPopupTrigger())永远不会评估为true,并且菜单永远不会显示.我在那里有断点来验证.
我在网上做了一些研究,似乎这个解决方案应该有效.由于右键单击取决于平台,因此使用isPopupTrigger()应该是最佳选择.
因为我在Mac上有什么特别的东西吗?
您可能知道,Mac OS X中保存的快捷方式是
Cmd+S在Windows上Ctrl+S,并且关闭应用程序的简短操作就是
Cmd+QWindows Alt + F4.但问题是如何在Java应用程序中执行这些操作?我是否需要找到我在应用程序中使用的所有快捷方式,并且匹配相关功能取决于不同的操作系统.有什么建议?谢谢.
我试图在按下 JButton 的同时创建一个不同的actionPerformedwhen Shift,但是当我使用时:
event.isShiftDown;
我的程序无法编译,因为它无法识别它。
对于一个程序,当按下按钮"1"时,我正在使用KeyListener向ArrayList添加内容.此列表中的对象不断可视化.使用KeyListener,即使按下按钮,这也能流畅地工作.
后来,我在GUI中添加了一个JMenuBar.向ArrayList添加内容现在有一个自己的JMenuItem,其加速器设置为KeyStroke'1',ActionListener执行与之前的KeyListener相同的东西.但是,现在的表现非常糟糕.按下'1'将会非常滞后,与KeyListener相比,速度非常慢.
为什么这么慢?难道我做错了什么?有没有更好的办法?
...
AL al = new AL();
menu.add(createMenuItem("Add", KeyEvent.VK_1, al));
}
private JMenuItem createMenuItem(String text, int key, ActionListener al){
JMenuItem menuItem = new JMenuItem(text);
menuItem.setAccelerator(KeyStroke.getKeyStroke(key, 0));
menuItem.addActionListener(al);
return menuItem;
}
private class AL implements ActionListener{
public void actionPerformed(ActionEvent e){
int keycode = ((JMenuItem)e.getSource()).getAccelerator().getKeyCode();
bla(keycode);
}
}
Run Code Online (Sandbox Code Playgroud) 这是我的 jFileChooser 摆动代码,它在单击打开按钮后打开另一个窗口。然后我们需要在第二个窗口中选择相应的文件,以便实际打开该文件。我需要对第一个窗口本身进行所有操作。
import com.opencsv.CSVReader;
import java.awt.*;
import java.awt.event.*;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import javax.swing.*;
import javax.swing.filechooser.FileNameExtensionFilter;
/*
* Created by JFormDesigner on Tue Sep 22 13:24:36 IST 2015
*/
/**
* @author Avinash Raj
*/
public class FileChooser extends JFrame {
private JFileChooser fileChooser1;
public FileChooser() {
initComponents();
}
private void fileChooser1ActionPerformed(ActionEvent e) {
int returnVal = fileChooser1.showOpenDialog(FileChooser.this);
if (returnVal == JFileChooser.APPROVE_OPTION) {
//File file = fc.getSelectedFile();
setVisible(false);
String path=fileChooser1.getSelectedFile().getAbsolutePath();
String filename=fileChooser1.getSelectedFile().getName();
//This is where a real …Run Code Online (Sandbox Code Playgroud) java ×11
swing ×10
awt ×2
image ×2
jframe ×2
macos ×2
command-line ×1
focus ×1
jbutton ×1
jdeveloper ×1
jfilechooser ×1
jpopupmenu ×1
nimbus ×1
shift ×1
windows ×1