1

我正在尝试创建一个带有用于输入的主窗口和一个单独的框以在主窗口下方显示输出的 GUI。但是,输出框的宽度将与主窗口不同,我不希望宽度的差异成为框架的一部分(这意味着差异应该是不可见的,用户可以点击后面的空白区域应用程序)。

但我也希望输出框与主窗口一起显示为 1 个窗口。我可以使用侦听器设置输出框的位置以使其粘在主窗口上,但我不希望它在 Windows(Microsoft) 任务栏中显示为单独的窗口。我也不希望输出框因为是一个单独的窗口而可以选择。

因此,是否有任何方法可以在 JFrame 之外创建 JPanel,或者有什么方法可以使用 JFrame 执行此操作并使其与我的约束一起工作?还有其他方法吗?

4

2 回答 2

3

在窗口中将单独的 JPanel 显示为非模态 JDialog。如果你不想要右上角的菜单按钮,你可以让它不装饰。

我不确定你的意思是:

(这意味着差异应该是不可见的,用户可以点击应用程序后面的空白区域)。

关于

我也不希望输出框因为是一个单独的窗口而可以选择。

确保对话框中没有可聚焦的组件,或者如果可聚焦,请将可聚焦属性设置为 false。


编辑
要防止对话窗口被聚焦,请添加一行:

dialog.setFocusableWindowState(false);

例如:

import java.awt.Dimension;
import javax.swing.*;

public class DialogNoFocus {
   public DialogNoFocus() {
      // TODO Auto-generated constructor stub
   }

   private static void createAndShowGui() {
      DialogNoFocus mainPanel = new DialogNoFocus();

      JFrame frame = new JFrame("JFrame");
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.getContentPane().add(Box.createRigidArea(new Dimension(400, 300)));
      frame.pack();
      frame.setLocationByPlatform(true);
      frame.setVisible(true);

      JDialog dialog = new JDialog(frame, "JDialog", false);
      dialog.getContentPane().add(Box.createRigidArea(new Dimension(500, 100)));
      int x = frame.getLocation().x;
      int y = frame.getLocation().y + frame.getHeight();
      dialog.setLocation(x, y);
      dialog.pack();
      dialog.setFocusableWindowState(false);
      dialog.setVisible(true);
   }

   public static void main(String[] args) {
      SwingUtilities.invokeLater(new Runnable() {
         public void run() {
            createAndShowGui();
         }
      });
   }
}
于 2013-10-20T21:14:00.520 回答
0
  1. 对话框

  2. 如何将 2 个内部框架(一个已装饰,另一个 - 未装饰且不可选择)或 1 个内部框架和面板放在一个大的半透明未装饰框架中?

起初,您只会在 Windows(Microsoft) 任务栏中看到一个图标。内部框架不会显示在任务栏中。

主框架应该是半透明的:如何设置 JFrame 背景透明但 JPanel 或 JLabel 背景不透明?

于 2013-10-20T22:25:41.877 回答