标签: jwindow

如何在没有闪烁的情况下调整Swing JWindow的大小?

我正在尝试基于a创建自定义UI JWindow,以便选择要共享的屏幕区域.我已经扩展JWindow并添加了代码以使其可调整大小并使用"切出"窗口的中心AWTUtilities.setWindowShape().

当运行代码时,我正在经历闪烁,因为窗口在负x和y方向上调整大小,即向上和向左.似乎正在发生的是在更新组件之前调整窗口大小并绘制窗口.下面是代码的简化版本.运行时,顶部面板可用于向上和向左调整窗口大小.窗口的背景设置为绿色,以清楚显示我不想显示的像素的位置.

编辑:改进代码以使用a正确地塑造窗口,ComponentListener并在底部添加虚拟组件以进一步说明闪烁(也更新了屏幕截图).

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Rectangle;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.awt.geom.Area;

import javax.swing.JPanel;
import javax.swing.JWindow;
import javax.swing.border.CompoundBorder;
import javax.swing.border.EmptyBorder;
import javax.swing.border.EtchedBorder;
import javax.swing.border.LineBorder;

import com.sun.awt.AWTUtilities;

public class FlickerWindow extends JWindow implements MouseListener, MouseMotionListener{

    JPanel controlPanel;
    JPanel outlinePanel;
    int mouseX, mouseY;
    Rectangle windowRect;
    Rectangle cutoutRect;
    Area windowArea;

    public static void main(String[] args) {
        FlickerWindow fw = new FlickerWindow();
    }

    public …
Run Code Online (Sandbox Code Playgroud)

java swing resize flicker jwindow

24
推荐指数
1
解决办法
5478
查看次数

中心摆动Windows

我正在开发一个Java Swing应用程序.如何才能使程序本身和任何其他窗口打开时它们出现在屏幕中央?

java swing center jframe jwindow

17
推荐指数
1
解决办法
1万
查看次数

Java Swing JWindow应用程序崩溃

如果我使用JDK1.8_40或更新版本(Oracle或OpenJDK执行相同操作),以下代码和对话框调整大小将使应用程序崩溃(尝试过Windows 7,x64,64位JDK)

import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JPanel;
import javax.swing.JWindow;
import javax.swing.SwingUtilities;
import javax.swing.Timer;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class Main {

public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable() {
        @Override
        public void run() {
            final JDialog dialog = new JDialog();
            dialog.add(new JPanel());
            dialog.setVisible(true);
            dialog.setBounds(100, 100, 100, 100);

            final JWindow dependentWindow = getjWindow(dialog);
            dependentWindow.setVisible(true);
            dependentWindow.setBounds(100, 100, 100, 100);
            Timer t = new Timer(300, new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    dependentWindow.setVisible(!dependentWindow.isVisible());
                }
            });
            t.start();
        }
    });
} …
Run Code Online (Sandbox Code Playgroud)

java swing jvm-crash jwindow java-8

15
推荐指数
1
解决办法
1455
查看次数

用Java实现自动完成 - 我做得对吗?

算法

  1. 开始
  2. 输入城市名称 - 部分或完整
  3. 如果用户点击进入,请从中获取文本 JTextField
  4. 开始蛮力搜索.
  5. 如果找到了匹配项,请将它们放入Vector并放入JList
  6. 如果未找到匹配项,请在中添加String"未找到匹配项"Vector
  7. 显示JWindow给包含结果的用户
  8. 停止

码:

package test;
import javax.swing.*;

import java.awt.Dimension;
import java.awt.event.*;
import java.util.Vector;

public class AutoCompleteTest extends JFrame{
    JTextField city = new JTextField(10);
    String enteredName = null;
    String[] cities = {"new jersey","new hampshire",
            "sussex","essex","london","delhi","new york"};
    JList list = new JList();
    JScrollPane pane = new JScrollPane();
    ResultWindow r = new ResultWindow();
//------------------------------------------------------------------------------
    public static void main(String[] args) {
        new AutoCompleteTest();
    }
//------------------------------------------------------------------------------
    public …
Run Code Online (Sandbox Code Playgroud)

java swing autocomplete jframe jwindow

11
推荐指数
1
解决办法
2万
查看次数

禁用JFrame最小化按钮

我正在为我的笔记本电脑开发一个工具.我想在JFrame中禁用最小化按钮.我已经禁用了最大化和关闭按钮.

以下是禁用最大化和关闭按钮的代码:

JFrame frame = new JFrame();  
frame.setResizable(false); //Disable the Resize Button  
// Disable the Close button
frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); 
Run Code Online (Sandbox Code Playgroud)

请告诉我如何禁用最小化按钮.

java swing jframe jdialog jwindow

7
推荐指数
4
解决办法
3万
查看次数

关闭子窗口后,UI会冻结,直到第一次单击

我正在编写一个带有工具栏颜色的下拉组件.所以我从'Swing hacks'一书中提出了想法,稍微改变了构思并添加了Swing的标准JColorChooser.行为应该遵循:我点击一个按钮,出现一个带有颜色选择器的窗口; 我选择一种颜色,然后关闭下拉窗口,按钮的文字将颜色变为所选颜色.总的来说一切正常,但有一个令人不快的错误.在这些操作之后,UI冻结,按钮甚至不接受鼠标事件,如"鼠标悬停".这发生在我点击之前.然后,UI表现为所需.

这是带有概念的代码.

import java.awt.AWTEvent;
import java.awt.Color;
import java.awt.MouseInfo;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.Toolkit;
import java.awt.event.AWTEventListener;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.AbstractButton;
import javax.swing.JButton;
import javax.swing.JColorChooser;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JWindow;
import javax.swing.SwingConstants;
import javax.swing.SwingUtilities;
import javax.swing.colorchooser.AbstractColorChooserPanel;
import javax.swing.event.AncestorEvent;
import javax.swing.event.AncestorListener;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import javax.swing.plaf.metal.MetalComboBoxIcon;

class DropDownComponent2 {
    private JWindow _window;
    private boolean _windowShouldBeShown = false;
    private JComponent _component;
    private AbstractButton _button;
    private JFrame _ownerFrame;

    public DropDownComponent2(JFrame …
Run Code Online (Sandbox Code Playgroud)

java swing jwindow jcolorchooser

7
推荐指数
1
解决办法
913
查看次数

非顶级窗口中的非透明JButton背景变得不透明?

在您阅读之前,这里有一些关于问题的澄清:

  1. SSCCE是为Java 7设计的.可以使用sun.*.AWTUtilities使其适应Java 6,但对我来说它在Java 6上是如何工作并不重要.
  2. 断层线是[...]new JDialog(someWindow).重影可被固定在SSCCE 通过简单地改变该行[...]new JDialog().

为什么顶级窗户没有重影?


预期行为:( final JDialog d = new JDialog()见SSCCE) TL和非TL窗口都具有半透明背景

如您所见,右侧窗口具有半透明背景(如预期的那样).

实际行为:( final JDialog d = new JDialog(f)见SSCCE) TL窗口显示半透明背景,而非TL背景即使在单次重绘后也变得不透明

在这种情况下,右侧窗口具有不透明背景.事实上,由于任何原因(最容易重现,在翻转时重新绘制)需要3-4次重绘,以使背景变得完全不透明.


SSCCE:

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;

import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.plaf.synth.ColorType;
import javax.swing.plaf.synth.Region;
import javax.swing.plaf.synth.SynthConstants;
import javax.swing.plaf.synth.SynthContext;
import javax.swing.plaf.synth.SynthLookAndFeel;
import javax.swing.plaf.synth.SynthPainter;
import javax.swing.plaf.synth.SynthStyle;
import javax.swing.plaf.synth.SynthStyleFactory;

public class SynthSSCCE
{
        public static void main(String[] …
Run Code Online (Sandbox Code Playgroud)

java user-interface swing synth jwindow

7
推荐指数
1
解决办法
355
查看次数

无法在JWindow中的JPanel内编辑JTextField的文本

在此输入图像描述

这是我之前的问题的继续,我问如何在系统托盘中放置一些东西.
在社区的一些帮助下,我可以做到这一点.但是什么我不能做的是改变的文本JTextFieldJWindow.

JWindowJPanel,一切都置于内JPanel,包括JTextField提醒百万吨.但是,即使我无法输入任何内容setEditable(true).
JTextField,因为它应该是白色的,当鼠标进入和返回时鼠标退出到默认的颜色正确地接收事件.

这有什么解决方法吗?


SSCCE

package demo;

import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.InputStream;

import javax.imageio.ImageIO;
import javax.sound.sampled.*;
import javax.swing.*;
import javax.swing.border.BevelBorder;

import example.Kernel32;

public class SSCCE {
    JPopupMenu popup = new JPopupMenu();
    JMenuItem exit = new JMenuItem("Exit");

    JWindow window = new JWindow();
    JPanel panel = new JPanel();
    int remindMeAt = 55;
    Kernel32.SYSTEM_POWER_STATUS batteryStatus = new Kernel32.SYSTEM_POWER_STATUS();

    Clip buzzer;
    AudioInputStream …
Run Code Online (Sandbox Code Playgroud)

java swing jtextfield jwindow

4
推荐指数
1
解决办法
2190
查看次数

我可以在Java中创建一个没有标题按钮的窗口吗?

是否可以在Java中创建某种具有框架和边框但没有标题按钮(最小化,恢复,关闭)的Window对象.

当然,我不能使用该undecorated设置.此外,窗口需要:

  • 拥有平台渲染的边框
  • 有一个标题栏
  • 没有标题的按钮.如果需要,我会以编程方式处理窗口.
  • 使用默认或System外观

这是一个例子:

无标题窗口

java swing window jframe jwindow

2
推荐指数
1
解决办法
1552
查看次数

JWindow任务栏图标未显示

我创建了一个不使用a的java程序JFrame,而是使用了一个JWindow.这正是我所需要的,没有Windows边框/标题栏的应用程序.

问题是它在运行时没有显示在屏幕底部的任务栏中.

任何人都可以弄清楚如何解决这个问题?

java swing jframe jwindow

2
推荐指数
1
解决办法
283
查看次数