下面是我的代码:
package javaapplication13;
import java.awt.*;
import javax.swing.*;
public class JavaApplication13 {
public static void main(String[] args) {
ButtonFrame bf = new ButtonFrame();
}
}
class ButtonFrame extends JFrame {
public ButtonFrame() {
JButton b1 = new JButton("1. Dugme");
JButton b2 = new JButton("2. Dugme");
JLabel l1 = new JLabel();
JCheckBox c1 = new JCheckBox("Prvo dugme");
JCheckBox c2 = new JCheckBox("Drugo dugme");
Container cp = getContentPane();
setTitle("Dugme");
setSize(400,400);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
this.add(b1);
this.add(b2);
this.add(c1);
this.add(c2);
this.add(l1);
b1.setBounds(20, 30, 90, 20);
b2.setBounds(20,70,90,20);
l1.setBounds(70,120,90,20);
c1.setBounds(120,30,120,20);
c2.setBounds(120,70,120,20);
l1.setText("");
}
}
当我用JDK17在我的Windows10计算机上复制和运行您的代码时,我没有看到您声称得到的闪烁。然而,当我更改代码并在添加按钮和复选框之前将标签添加到框架中时(正如您在问题中所述),我确实看到了“闪烁”。
虽然您已经接受@Antoniossss的回答,但不建议不使用布局管理器。请参考以下摘录自没有布局管理器的情况下
尽管没有布局管理器也是可能的,但如果可能的话,您应该使用布局管理器。
import java.awt.Container;
import java.awt.EventQueue;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComponent;
import javax.swing.JFrame;
public class BtnFrame {
private void createAndDisplayGui() {
JFrame frame = new JFrame("Dugme");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new GridBagLayout());
createForm(frame.getContentPane());
frame.pack();
frame.setLocationByPlatform(true);
frame.setVisible(true);
}
private void createForm(Container contentPane) {
if (contentPane instanceof JComponent) {
JComponent jCmpt = (JComponent) contentPane;
jCmpt.setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20));
}
GridBagConstraints gbc = new GridBagConstraints();
gbc.anchor = GridBagConstraints.LINE_START;
gbc.gridx = 0;
gbc.gridy = 0;
gbc.insets.bottom = 5;
gbc.insets.left = 5;
gbc.insets.right = 5;
gbc.insets.top = 5;
JButton b1 = new JButton("1. Dugme");
contentPane.add(b1, gbc);
gbc.gridx = 1;
JCheckBox c1 = new JCheckBox("Prvo dugme");
contentPane.add(c1, gbc);
gbc.gridx = 0;
gbc.gridy = 1;
JButton b2 = new JButton("2. Dugme");
contentPane.add(b2, gbc);
gbc.gridx = 1;
JCheckBox c2 = new JCheckBox("Drugo dugme");
contentPane.add(c2, gbc);
gbc.gridx = 0;
gbc.gridy = 2;
gbc.anchor = GridBagConstraints.CENTER;
JLabel l1 = new JLabel("label");
contentPane.add(l1, gbc);
}
public static void main(String[] args) {
final BtnFrame gui = new BtnFrame();
EventQueue.invokeLater(() -> gui.createAndDisplayGui());
}
}
import java.awt.Container;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class ButtonFrame extends JFrame {
public ButtonFrame(){
JButton b1 = new JButton("1. Dugme");
JButton b2 = new JButton("2. Dugme");
JLabel l1 = new JLabel();
JCheckBox c1 = new JCheckBox("Prvo dugme");
JCheckBox c2 = new JCheckBox("Drugo dugme");
Container cp = getContentPane();
cp.setLayout(null); // Added this line.
setTitle("Dugme");
setSize(400,400);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
this.add(l1);
this.add(b1);
this.add(b2);
this.add(c1);
this.add(c2);
// this.add(l1);
b1.setBounds(20, 30, 90, 20);
b2.setBounds(20,70,90,20);
l1.setBounds(70,120,90,20);
c1.setBounds(120,30,120,20);
c2.setBounds(120,70,120,20);
l1.setText("label");
}
public static void main(String[] args) {
ButtonFrame bf = new ButtonFrame();
}
}
问题内容: 我想知道是否有关于使用Java进行声明性GUI编程的建议。(我讨厌基于视觉的GUI创建者/编辑器软件,但是对手动实例化JPanels和Boxes以及JLabel和JLists等感到有点厌倦。) 这是我的总体问题,但是对于我正在考虑采用的方法,我有两个具体问题: JavaFX:在JavaFX中是否有一个实际的GUI显示示例(例如,不是圆形和矩形,而是列表框,按钮和标签等),可以与访问和更
问题内容: 我的JDBC代码有问题。我正在尝试通过MySQL连接,但它给了我一个错误。如果您有时间,下面会给出我的错误日志。 我的代码如下。我正在使用驱动程序: 问题答案: 当您使用Eclipse作为IDE并尝试运行甚至无法编译的代码时,都会发生此错误。在Eclipse中检查“ 问题” 视图,并在执行应用程序之前修复编译错误。
本文向大家介绍java必学必会之GUI编程,包括了java必学必会之GUI编程的使用技巧和注意事项,需要的朋友参考一下 一、事件监听 测试代码一: 测试代码二: 二、TextField事件监听 测试代码: 使用TextField类实现简单的计算器 JAVA里面的经典用法:在一个类里面持有另外一个类的引用 运行结果如下: 三、内部类 内部类的使用范例: 内部类带来的巨大好处是: 可以很方便地访问外部
我的JDBC代码有一些问题。我正在尝试通过MySQL连接,但它给我一个错误。如果您有时间,我的错误日志如下所示。 我的代码如下。我正在使用驱动程序:
问题内容: 我将如何以编程方式单击Swing JButton,该方式将注册所有相关的动作/鼠标事件并且对用户可见(即,他们将看到按下的按钮就好像他们实际单击了按钮一样)? 该按钮位于我正在运行的同一应用程序中;我不是要控制另一个应用程序中的按钮。我想我可以将事件直接注入到队列中,但是如果可能的话,我宁愿避免这种方法,并且这样做不会显示可见的点击。 我看到java.awt.Robot类提供了移动鼠标
我发现 await 并没有用 update_product_loop 还是立刻就执行力,那 await 和 async 的到底是什么含义,以及我要怎么才能做到真正的等 异步任务 a 完成再去其它呢,就是说 a 里有很多子任务是异步的