- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
Linux 上的 Java 1.8.0_60。创建一个 JFrame,设置一个 JDesktopPane 作为其内容 Pane ,并用于在任意位置显示一些线条图形和 JInternalFrame。似乎某些调用或调用位置会导致无法通过单击“x”来销毁 JFrame 的状态。
这些是类(class);不是注释“X1”和“X2”。
import java.awt.*;
import javax.swing.*;
public class InternalFrameEventDemo extends JFrame {
public InternalFrameEventDemo(String title) {
super(title);
JDesktopPane desktop = new MyDesktop();
this.setContentPane(desktop);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.pack();
this.setVisible(true);
}
private class MyDesktop extends JDesktopPane {
public MyDesktop(){
this.setPreferredSize(new Dimension(500,300));
}
public void paintComponent( Graphics sg ) {
super.paintComponent( sg );
new StarLabel( this, 100, 100, "Here at 100" ); // X1
new StarLabel( this, 200, 200, "Here at 200" );
}
}
public static void main(String[] args) {
//Schedule a job for the event-dispatching thread:
//creating and showing this application's GUI.
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
JFrame frame = new InternalFrameEventDemo("InternalFrameEventDemo");
}
});
}
}
星标
import java.awt.*;
import javax.swing.*;
public class StarLabel extends JInternalFrame {
public StarLabel( JComponent panel, int x, int y, String text ) {
super( null, false, true, false, false );
this.setBorder( null );
((javax.swing.plaf.basic.BasicInternalFrameUI) this.getUI()).setNorthPane(null);
this.setVisible( true );
this.setOpaque( false ); // X2
this.add( new JLabel( text ) );
this.pack();
this.setLocation( x, y );
panel.add( this );
}
}
X1:如果未在 paintComponent
中调用 StarLabel 构造函数,则效果仍然不存在。
X2:如果 setOpaque 未设置为 false,也不会出现该效果。
现在我可以将 setOpaque 与 true 一起使用 - false 纯粹是偶然。但我仍然想知道我是否违反了小字中的其中一项规则?或者...?
最佳答案
But I'd still like to know whether I an violating one of the rules in the small print?
是的。
The effect remains absent if the StarLabel constructor calls aren't made in paintComponent.
绘画方法仅用于绘画。
永远不要在绘画方法中创建 Swing 组件。您无法控制何时调用绘画方法,因此每次 Swing 确定需要创建组件时您都将创建新组件。
组件应该在类的构造函数中创建。
关于java - JDesktopPane.setOpaque(false) 加上 JInternalFrame 的使用会抑制包含 JFrame 的关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40562760/
我试图将两个面板放置在另外两个面板的顶部,因此位置完全匹配。这将允许我在之前(底部)面板的顶部进行绘画。这样做的原因是,我实现了“拖动矩形”缩放功能,因此用户在面板上拖动鼠标绘制一个矩形,然后面板将填
我想知道 setOpaque() 方法的作用... 这是小程序的一部分: public class Buttons extends JFrame implements ActionListen
我通过扩展 JPanel 并使用 OverlayLayout 在彼此之上添加 2 个 JLabel 制作了一个按钮。 JLabels 之一是图标,它只是一个字体很棒的图标。另一种是悬停文本。我希望 J
谁能解释为什么 Nimbius 对待 setOpaque() 的方式与其他 Java LaF 不同。它破坏了我的代码,因为通常透明的组件不再透明。 编辑:问题似乎只涉及 JTextAreas(这是我需
我正在创建一个模拟类型的应用程序,我想要一个背景层和一个顶部的所有动画层。我目前正在使用 JlayeredPanes,但我无法让顶层的背景显示为透明,因此我可以看到背景,非常感谢任何帮助,代码如下:
我对 JTextArea 有疑问。我想用 setOpaque(false) 使 JTextArea 不可见,但它不起作用。这是我的代码: public class NewClass extends J
我有一个 jLabel,它最初默认将 setOpaque 设置为 false。当我将标签的背景颜色设置为某种颜色并将 setOpaque 设置为 true 时,它不会显示该颜色。为什么即使将 se
import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.GridBagConstr
我向 JPanel 添加了几个 JButton,并为 JPanel 添加了 setOpaque(false)。当我将鼠标移到 JButton 上时,按钮下方出现一个正方形,然后很快消失,这让我感觉很糟
我的滚动 Pane 存在透明度/滚动问题。据我所知,文档没有解决这种行为。 这是我的透明文本面板的代码: textArea.setOpaque(false); scrollPane.s
本文整理了Java中com.tc.admin.common.XContainer.setOpaque()方法的一些代码示例,展示了XContainer.setOpaque()的具体用法。这些代码示例主
所以我创建了一个 NSWindow(带圆角),在 10.10 中,它周围有一个阴影。然而当我在10.9中测试时,阴影消失了。我在每个可能的点设置了断点,并且 [window hasShadow] 始终
我正在创建贪吃蛇游戏,并遇到了必须使用 JLayeredPane 的问题。我已经使用 DrawBoard 类绘制了板,该类必须根据计时器不断地重新绘制。我必须为放置在板上的 3 个水果分配随机颜色,因
我有一个 Java 代码,我在其中实现了一个半透明的 JPanel,上面有一个用 Graphics 2D 绘制的图像。此图像是一个 PNG,其中包含一个白色矩形,80% 不透明,遍及 JFrame。现
我想删除我的 JRadioButton 的背景,但仍保持相同的外观和感觉。图片会自己说话: 当我执行这段代码时: JRadioButton myJRadioButton = new JRadioBut
我的问题是,使用 setOpaque(false)(我已经将其与 JPanel 一起用于在 Swing 中布局 UI)是否会影响绘画性能而不是保持一切都是不透明的(其中 isOpaque() 返回 t
Linux 上的 Java 1.8.0_60。创建一个 JFrame,设置一个 JDesktopPane 作为其内容 Pane ,并用于在任意位置显示一些线条图形和 JInternalFrame。似乎
我的代码是这样的 class ActionPanel extends JPanel{ private JButton calculate; private JLabel sup;
如何让JPanel在这个例子中变得透明?渐变背景不可见: package test; import java.awt.Color; import java.awt.Dimension; import
我是一名优秀的程序员,十分优秀!