gpt4 book ai didi

java - 行为不一致

转载 作者:行者123 更新时间:2023-11-30 07:11:38 24 4
gpt4 key购买 nike

以下代码在我运行时似乎产生了不一致的行为。在某些运行中, Canvas 最终显示为灰色,但在其他运行中它最终显示为蓝色。为什么会这样,我该如何纠正?

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

public class psw extends JFrame {
String symbols="~ ! @ # $ % ^ & * ( ) _ = + : ; < , > . ? / | \\ '";

public static void main(String[] args){
psw app=new psw();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE) ;
app.setSize(600, 450);
app.setVisible(true);
app.getContentPane().setBackground(new Color(30,144,255));

@Override
public void paint(Graphics g) {
g.setColor(new Color(255,255,255));
g.drawRect(10, 10, 60, 50);
g.drawLine(60, 50, 220, 20);
g.drawString(symbols, 10, 150);
}
}

最佳答案

你需要记得调用super.paint(g);。这显示了这幅画。

public void paint(Graphics g) {
super.paint(g);
g.setColor(new Color(255,255,255));
g.drawRect(10, 10, 60, 50);
g.drawLine(60, 50, 220, 20);
g.drawString(symbols, 10, 150);
}
  • 此外,在顶级容器(如 JFrame)上绘制也不是一个好主意,因为它们不是双缓冲的。而是在组件上绘制,主要是 JPanel 并覆盖其 paintComponent 方法。就像使用 paint 一样,您需要调用 super.paintComponentsuper.paintComponent(g)JPanel 的父类(super class)(JComponent 类)调用 paintComponent 方法来删除面板上当前绘制的任何内容。

这是使用 JPanel 而不是 JFrame 的运行方式

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;

public class psw extends JPanel {
String symbols = "~ ! @ # $ % ^ & * ( ) _ = + : ; < , > . ? / | \\ '";

public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
JFrame app = new JFrame();
app.add(new psw());
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
app.pack();
app.setVisible(true);

}
});
}

@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(new Color(30, 144, 255));
g.fillRect(0, 0, getWidth(), getHeight());
g.setColor(new Color(255, 255, 255));
g.drawRect(10, 10, 60, 50);
g.drawLine(60, 50, 220, 20);
g.drawString(symbols, 10, 150);
}

public Dimension getPreferredSize() {
return new Dimension(600, 450);
}
}

关于java - 行为不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20975592/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com