import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Tetris extends JFrame {
public Tetris() {
add(new GamePanel());
setDefaultCloseOperation(EXIT_ON_CLOSE);
setResizable(false);
setSize(800, 600);
setVisible(true);
setLocationRelativeTo(null);
setTitle("Tetris");
}
public class GamePanel extends JPanel {
public GamePanel(){
TetrisBoard tetraBoard= new TetrisBoard();
GridBagLayout layout= new GridBagLayout();
this.setLayout(layout);
GridBagConstraints c = new GridBagConstraints();
c.gridx = 2;
c.gridy = 1;
c.ipadx = 190;
c.ipady = 390;
c.insets.left= 360;
layout.setConstraints(tetraBoard, c);
this.add(tetraBoard);
setBackground(Color.WHITE);
}
@Override
public void paint(Graphics g){
super.paint(g); …Run Code Online (Sandbox Code Playgroud) 我需要在xy轴坐标系中绘制谷歌和雅虎访问时间.现在我绘制了xy轴坐标系.
public void paintComponent(Graphics gl) {
Graphics2D g = (Graphics2D) gl;
g.setColor(new Color(222, 222, 222));
g.fillRect(0, 0, this.getWidth(), this.getHeight());
g.setColor(new Color(0, 0, 0));
int x=15;
int y=15;
g.drawString("20", 0, 10);
for(int i=1;i<=20;i++) {
g.drawLine(x, y+(35*(i-1)), x, y+(35*i));
g.drawString(""+(20-i), 0, y+(35*i));
}
for(int i=1;i<=10;i++) {
g.drawLine(x+(70*(i-1)),715, x+(70*i), 715);
g.drawString(""+i, x+(70*i),730);
}
}
Run Code Online (Sandbox Code Playgroud)
现在我需要动态重新绘制这个XY坐标系上的访问时间值.但我知道何时调用repaint().它将再次重新绘制()XY坐标.如何在不重新绘制XY坐标的情况下重新绘制访问时间值?
我做了一个迷你代码绘制椭圆并相互链接,现在我尝试移动椭圆(圆圈),但我有一个问题(在编码)
// Panneau.java
public class Panneau extends JPanel {
private int R = 20;
private boolean isDrag = false;
String text = "stack";
int x = 250, y = 200;
int height = 50, width = 50;
Random Rnd = new Random();
int rand=Rnd.nextInt();
int r=Math.abs(rand%250);
int r2=Math.abs(rand%250);
public Panneau() {
addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
if ((x<=e.getX() && x+R>=e.getX()) && ( y<=e.getY() && y+R>=e.getY())) {
moveVertex(e.getX(),e.getY());
isDrag = true;
}
}
@Override
public void mouseReleased(MouseEvent …Run Code Online (Sandbox Code Playgroud) @Override
public void paintComponent(Graphics g) {
Graphics2D g2 = (Graphics2D) g;
super.paintComponent(g2);
g2.fillRect(20, 20, 200, 200);
g2.drawImage(map, 0, 0, 1004, 687, null);
}
Run Code Online (Sandbox Code Playgroud)
这是我的JPanel中paintComponent的代码.
当应用程序启动时,我可以看到矩形(仅在那里,因为我想检查是否正在调用paintComponent).但是在我通过调整窗口大小或按下强制重绘()的按钮强制重绘之前,地图不会绘制.
我尝试在几个地方调用validate(),因为有些答案表明,但它没有用.
我创建了一个类,它是一个“镜像”对象。类构造函数具有镜像坐标和方向。在这个类中也有一个paintComponent方法。我正在尝试在我的框架中使用此类创建一个镜像对象,并自动绘制带有坐标和方向的镜像。有“镜像”类。我可以这样做吗?
import java.awt.Graphics;
import java.awt.Image;
import javax.swing.ImageIcon;
import javax.swing.JComponent;
@SuppressWarnings("serial")
class Mirror extends JComponent{
public static int xm, ym;
public static boolean direction;
public Mirror(int xmm, int ymm, boolean directionm){
xm=xmm;
ym=ymm;
direction=directionm;;
repaint();
}
public int getX(){
return xm;
}
public int getY(){
return ym;
}
public boolean getDirection(){
return direction;
}
public int getIntDirection(){
int a;
if(direction==true){
a=1;
}else{
a=0;
}
return a;
}
public void setDirection(boolean status){
direction=status;
}
@Override
public void paintComponent(Graphics g){
super.paintComponent(g); …Run Code Online (Sandbox Code Playgroud) 我正在尝试将图像添加到我的applet中.我用谷歌搜索了这个,但我没有找到一个我理解的体面的例子.有谁知道我在哪里可以找到一个添加图像和applet的好例子?
我在网上得到了这个,但是当我运行applet时它没有显示我的图像.
public class Lab5 extends JApplet {
//Lab5(){}
Image img;
public void init() {
img = getImage(getDocumentBase(), "img\flag0.gif");
}
public void paintComponent(Graphics g) {
g.drawImage(img, 50, 50, this);
}
}
Run Code Online (Sandbox Code Playgroud)
下面是我的HTML文件
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<applet code="Lab5.class" width= 250 height = 50></applet>
</body>
</html>
Run Code Online (Sandbox Code Playgroud) 可能重复:
java swing背景
图像在帧上绘制自己的缓冲图像
我试图在我的框架中添加背景图像,但我没有做过任何工作.
我设计了一个老虎机,它由几个面板组成.现在,我正在尝试为框架添加一个漂亮的背景.
我尝试使用paint方法.但是,由于我已经使用绘制方法来绘制卷轴图像,因此它不适用于背景.
我也尝试添加一个JLabel,但是当我这样做时会覆盖所有内容或被覆盖,具体取决于我如何调用它.以下是我的代码; 任何帮助都感激不尽:
import javax.swing.event.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import sun.audio.*;
public class SlotMachine extends JFrame {
private Container c = getContentPane();
private ImageIcon handleIcon = new ImageIcon("starWars/slot-handle.png");
private ImageIcon quitIcon = new ImageIcon("starWars/quit2.jpg");
private ImageIcon logoIcon = new ImageIcon("starWars/logo3.jpg");
private ImageIcon BG = new ImageIcon("space.jpg");
private JButton spin = new JButton("Spin", handleIcon);
private JButton quit = new JButton("Quit", quitIcon);
private JLabel logo = new JLabel(logoIcon);
private JLabel bankTotal = …Run Code Online (Sandbox Code Playgroud) 所以我创建了一个名为BasePanel的抽象JPanel.在其中我使用双缓冲区代码,如下所示:
public void paint(Graphics g) {
dbImage = createImage(getWidth(), getHeight());
dbg = dbImage.getGraphics();
paintComponent(dbg);
g.drawImage(dbImage, 0, 0, this);
repaint();
}
public void paintComponent(Graphics g) {
g.setColor(Color.BLACK);
}
Run Code Online (Sandbox Code Playgroud)
然后当在另一个面板上扩展它时,我想知道如果我只覆盖paintComponent方法它仍然会加倍缓冲吗?所以我甚至不需要调用paint方法
一个例子
public class StartScreen extends BasePanel {
@Override
public void paintComponent(Graphics g) {
g.setColor(Color.BLACK);
g.fillRect(0, 0, getWidth(), getHeight());
g.setColor(Color.WHITE);
g.drawString("Animation Screen", 175, 150);;
repaint();
}
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Swing 2d绘制一些可旋转的箭头,在线提供了一些示例代码,因此我将它们复制并组合到一个应用程序中,但是3种方法的每种方法都存在问题:第一种方法不会旋转居中,其他2个箭头的方向不正确,有人可以告诉我如何修复它们吗?
import java.awt.*;
import java.awt.geom.*;
import javax.swing.*;
import javax.swing.event.*;
public class Arrow_Test extends JPanel implements ChangeListener {
Path2D.Double arrow = createArrow();
double theta = 0;
public void stateChanged(ChangeEvent e) {
int value = ((JSlider) e.getSource()).getValue();
theta = Math.toRadians(value);
repaint();
}
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
g2.setStroke(new BasicStroke(6));
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
int cx = getWidth() / 2;
int cy = getHeight() / 2;
AffineTransform at = AffineTransform.getTranslateInstance(cx, cy);
at.rotate(theta);
at.scale(2.0, 2.0);
Shape shape = at.createTransformedShape(arrow); …Run Code Online (Sandbox Code Playgroud) java swing,paintComponent在下面的代码中,它正在执行但是paintComponent函数没有工作,所以它的原因是什么.我是java的新手,所以犯了这些错误.
package practice;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
public class gui extends JPanel implements ActionListener
{
JFrame frame;
JButton button;
public void paint(Graphics g)
{
super.paint(g);
g.setColor(Color.black);
g.fillRect(0, 0, getWidth(), getHeight());
}
public void go()
{
frame=new JFrame();
button=new JButton("click me");
frame.getContentPane().add(button);
button.addActionListener(this);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(2000,2000);
frame.setVisible(true);
}
public static void main(String[] args)
{
gui g=new gui();
g.go();
}
public void actionPerformed(ActionEvent e)
{
button.setText("mmmmm");
}
}
Run Code Online (Sandbox Code Playgroud) 我有两个类..类面板扩展JPanel,
和另一个每秒控制那个jpanel的油漆的类..(我用swing.Timer)
我的代码失败了
继续我到目前为止尝试..
类面板扩展了JPanel:
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Control control = new Control(this,g);
repaint();
}
Run Code Online (Sandbox Code Playgroud)
班级控制:
public class Control implements ActionListener{
private int XX=0;
private int YY=0;
private Graphics2D g2;
private JPanel panel;
Timer tim = new Timer(1000, this);
public Control(JPanel el,Graphics g) {
this.g2=(Graphics2D)g.create();
this.panel=el;
tim.start();
}
@Override
public void actionPerformed(ActionEvent e) {
XX++;
YY++;
/////////////////////
//my priority
GradientPaint gp = new GradientPaint(XX, YY, Color.BLUE, panel.getWidth(), panel.getHeight(), Color.WHITE);
//////////////////////
g2.setPaint(gp);
g2.fillRect(0, 0, panel.getWidth(), panel.getHeight());
panel.repaint(); …Run Code Online (Sandbox Code Playgroud) System.out你可以看到10次"设置"然后2次"paintComponent".在调用每个时间集之后我应该改变什么呢?它改变了"paintComponente"?================================================== ================================
public class exampe extends JPanel
{
int x;
int y;
public void paintComponent(Graphics g)
{
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
g2.fillOval(x-2,y-2,4,4);
System.out.println("paintComponent");
}
public void set(int X, int Y)
{
x = X;
y = Y;
System.out.println("set");
super.repaint();
}
public static void main(String args[])
{
int e=1;
JFrame frame = new JFrame("TEST");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
exampe ex= new exampe();
JScrollPane scroll = new JScrollPane(ex);
frame.getContentPane().add(scroll);
frame.setSize(400, 300);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
for(int i=0; …Run Code Online (Sandbox Code Playgroud)