Dee*_*pak 2 java swing jpanel jframe
当我点击JTable上的编辑按钮时,我想显示一个表单.显示的表单应该与JTable重叠,并且应该使jTable变暗(就像具有透明度的黑色背景).我该怎么做呢 ?我是否必须在创建JFrame期间将jPanel添加到窗口中,或者我将面板创建为单独的文件,并在单击按钮时使其可见.告诉我怎么做?
编辑
类似的东西

编辑2
您已使用JOption窗格,另一个建议是使用JDialog.但如果我使用其中任何一个我不能创建子窗口.我只需要从弹出的Jdialog窗口调用虚拟键盘.当JDialog保持焦点时,我无法访问键盘.如何解决这个问题?
编辑3
目前的问题是,我使用虚拟键盘输入使用JDialog显示的表单中的值.现在我无法打开虚拟键盘并使其处于活动状态.即使我打开它,它仍然是JDialog的后面,而焦点仍然是JDialog.我需要关闭JDialog才能使用虚拟键盘.
我有点晚了回答,因为我是创建一个测试程序,但我的想法是一样的安德鲁(对不起安德鲁,以及1 +安德鲁):
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class DarkBackground extends JPanel {
private static final Dimension MAIN_SIZE = new Dimension(800, 500);
private static final Color DarkColor = new Color(0, 0, 0, 60);
private JComponent glassPane;
public DarkBackground() {
JButton showDialogBtn = new JButton("Show Dialog");
showDialogBtn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
setGlassPaneVisible(true);
JOptionPane.showMessageDialog(DarkBackground.this, "Foo");
setGlassPaneVisible(false);
}
});
add(showDialogBtn);
setPreferredSize(MAIN_SIZE);
}
public void setGlassPane(JComponent glassPane) {
JRootPane rootpane = SwingUtilities.getRootPane(this);
this.glassPane = glassPane;
rootpane.setGlassPane(glassPane);
}
public void setGlassPaneVisible(boolean visible) {
glassPane.setVisible(visible);
}
private static void createAndShowUI() {
DarkBackground darkBgrd = new DarkBackground();
JFrame frame = new JFrame("DarkBackground");
frame.getContentPane().add(darkBgrd);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
darkBgrd.setGlassPane(new MyGlassPane(DarkColor));
}
public static void main(String[] args) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
createAndShowUI();
}
});
}
}
class MyGlassPane extends JComponent {
private Color backgroundColor;
public MyGlassPane(Color backgroundColor) {
this.backgroundColor = backgroundColor;
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(backgroundColor);
g.fillRect(0, 0, getWidth(), getHeight());
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1784 次 |
| 最近记录: |