我是netbean的图形系统的新手,并且一直在努力学习java教科书.我正在尝试制作一个简单的程序来显示一些东西,并按照它的要求完全按照本书.我在研究中发现了其他一些有类似问题的人.这些人倾向于被告知使用维度和preferredSize方法,尽管在我试图在java中重现的书的部分中没有提到这些.以下是我的代码:
public class Main {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
JFrame frame = new JFrame(); //create frame
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //makes x button end program
frame.setSize(300,200); //determine the size of the frame
ImageIcon image = new ImageIcon("panda.jpg");
ColorPanel p = new ColorPanel(Color.pink, image);
Container pane = frame.getContentPane();
pane.add(p);
frame.setVisible(true); //make frame show up
}
}
public class ColorPanel extends JPanel {
ImageIcon image;
public ColorPanel(Color c, ImageIcon i){
setBackground(c);
image = i; …Run Code Online (Sandbox Code Playgroud) 我一直试图调试这几个小时.该程序应该是一个图形坐标的图形,但我不能得到任何东西甚至不是随机线,但如果我把一个打印声明放在那里它的工作原理.这是paintComponent方法的一个问题.当我在g.drawLine之前打印语句然后打印,但即使我放置一个带坐标(1,3),(2,4)的随机行,它也不会绘制任何行.
import java.awt.*;
import java.util.*;
import javax.swing.*;
public abstract class XYGrapher
{
abstract public Coordinate xyStart();
abstract public double xRange();
abstract public double yRange();
abstract public Coordinate getPoint(int pointNum);
public class Paint extends JPanel
{
public void paintGraph(Graphics g, int xPixel1, int yPixel1, int xPixel2, int yPixel2)
{
super.paintComponent(g);
g.setColor(Color.black);
g.drawLine(xPixel1, yPixel1, xPixel2, yPixel2);
}
public void paintXAxis(Graphics g, int xPixel, int pixelsWide, int pixelsHigh)
{
super.paintComponent(g);
g.setColor(Color.green);
g.drawLine(xPixel, 0, xPixel, pixelsHigh);
}
public void paintYAxis(Graphics g, int yPixel, int …Run Code Online (Sandbox Code Playgroud) 我正在使用swing创建一个战舰类型的游戏.我在一个面板中绘制图像并显示正常,但是当我在不同的面板中绘制更多图像时,它会删除第一个面板中的大部分(如果不是全部)图像并保持第二个面板中的图像完好无损.如何在面板中绘制后保持图像不会消失.
我一直在网上寻找答案大约一个星期左右,并且没有提出任何问题......
public class GameBoard extends JPanel{
Graphics g0;
public void paintComponent(Graphics g1) {
g0 = this.getGraphics();
// fill with the color you want
int wide = 275;
int tall = 275;
// go into Graphics2D for all the fine art, more options
// optional, here I just get variable Stroke sizes
Graphics2D g2 = (Graphics2D) g1;
g2.setColor(Color.black);
g2.setStroke(new BasicStroke(1));
Graphics2D g3 = (Graphics2D) g0;
g3.setColor(Color.black);
g3.setStroke(new BasicStroke(1));
// the verticals
for (int i = 0; i < 12*25; i+=25) …Run Code Online (Sandbox Code Playgroud) 您好我想知道如何在方法MouseClicked之外获取鼠标的位置我需要在有人点击的地方画一个点..这是我现在使用的代码.有人可以帮我弄这个吗?
Dot punt = new Dot();
public void paintComponent(Graphics g) {
super.paintComponent(g);
punt.setDot(g, getX(), getY(), 5);
repaint();
}
@Override
public void mouseClicked(MouseEvent m) {
// TODO Auto-generated method stub
gebeurtenisverslag.setText(
m.getClickCount() + " keer geklikt op " + m.getX() + "," + m.getY());
}
Run Code Online (Sandbox Code Playgroud) 我有一个Java绘图程序,它使用自定义JPanel进行绘制.当点击JPanel时会画一个小椭圆(或圆圈,如果你愿意的话),每当你点击另一个地方时,椭圆会消失.坐标也会更新,但椭圆不会停留,它会移动到用户点击下一个位置...这是自定义JPanel的代码:
int xCord, yCord;
public class PaintPanel extends JPanel implements MouseListener {
// default serial whatever...
private static final long serialVersionUID = -6514297510194472060L;
// initial values
int xCord = -10;
int yCord = -10;
public PaintPanel() {
addMouseListener(this);
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(ProgramUI.currentColor);
g.fillOval(xCord, yCord, 8, 8);
repaint();
}
@Override
public void mouseClicked(MouseEvent m) {
}
@Override
public void mouseEntered(MouseEvent m) {
}
@Override
public void mouseExited(MouseEvent m) {
}
@Override
public void mousePressed(MouseEvent m) { …Run Code Online (Sandbox Code Playgroud) 他是java的初学者,我正在做一个我需要画汽车的练习.我书中的代码不起作用,我不知道为什么.
我不是java的总菜鸟我知道类,对象,方法等但是如果它涉及到语法的确切行为我仍然很高兴.
这是代码:
import java.awt.*;
import javax.swing.*;
import java.util.*;
public class Vb1101 extends JFrame {
public static void main( String args[] ){
JFrame frame = new Vb1101();
frame.setSize(350,200);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setTitle("exercise 1101 draw car parts");
frame.setContentPane( new Carpanel() );
frame.setVisible( true );
}
}
class Carpanel extends JPanel {
public Car car;
public void Carpanel(){
car = new Car( 20, 150, 80, 30 );
}
public void paintComponent( Graphics g ){
super.paintComponent(g);
setBackground(Color.WHITE);
car.teken(g);
}
}
class Car {
public ArrayList<Part> …Run Code Online (Sandbox Code Playgroud) 我正在制作游戏.游戏中的每个对象都在注册表中注册.我有一个游戏循环调用的更新和渲染方法.render方法调用repaint()我JPanel,我已经覆盖paintComponent(Graphics g)了图形.当它呈现并更新时,它会遍历每个对象并对其进行更新并从注册表中呈现它.有时候我会得到一个并发修改错误,我相信这是因为有些事情是在paintComponent()我的游戏循环中调用另一个.如果一个JPanel或甚至JFrame调用自己的重绘,有没有办法禁用它?
我正在使用相同的数字来设置框架的大小,因为我要绘制矩形,但图形比我的JFrame大.为什么是这样?
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Test {
public static void main(String[] arguments) {
Test test = new Test();
JFrame frame = new JFrame();
DrawPane contentPane = test.new DrawPane();
frame.setContentPane(contentPane);
frame.setSize(300, 400);
frame.setVisible(true);
}
private class DrawPane extends JPanel {
@Override
protected void paintComponent(Graphics g) {
g.setColor(Color.YELLOW);
g.fillRect(0, 0, 300, 400);
}
}
}
Run Code Online (Sandbox Code Playgroud) 我一直在构建一个简短的程序,基本上在JPanel上绘制一个太空船,并听取指示程序射击子弹的键.问题是它甚至没有在屏幕上绘制宇宙飞船或子弹.我还怀疑KeyBindings可能无法工作,因为这是以前的问题(我可能已经或可能没有修复),但手头的主要问题仍然是我的屏幕没有被绘制.这是我的代码:
public enum Direction {
LEFT, RIGHT, SPACE
}
import javax.swing.JFrame;
public class Main {
public static void main(String[] args) {
JFrame frame;
Ship s1;
Shoot shoot;
// Set the frame up
frame = new JFrame();
frame.setSize(400, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setResizable(false);
frame.setVisible(true);
// Get some more necessary objects
s1 = new Ship();
shoot = new Shoot(s1);
frame.getContentPane().add(shoot);
s1.setShoot(shoot);
// Threads
Thread ship = new Thread(s1);
ship.start();
}
}
import java.awt.Graphics;
import java.awt.event.KeyEvent;
import javax.swing.Action;
import javax.swing.ActionMap;
import javax.swing.InputMap;
import javax.swing.JPanel;
import …Run Code Online (Sandbox Code Playgroud) 我在用JComponentJava 重写对象和绘画时知识非常有限.我要做的是创建一个函数,我可以调用它来设置透明度,避免在面板内单击按钮时出现伪像.基本上我会JPanel在另一个面板上使用它.喜欢,
class panel1 extends JPanel(){
public panel1(){
this.add(new panel2())
//call the setPanelTransparency(this);
}
class panel2 extends JPanel(){
this.setPreferredSize(new Dimension(500,500));
this.setBorder(BorderFactory.createLineBorder(2,Color.RED);
}
Run Code Online (Sandbox Code Playgroud)
我该如何纠正这种方法?当我试图将它作为panel1课程中的方法包含时,我会收到错误.
public void setPanelTransparency(JPanel myPanel){
protected void paintComponent ( Graphics g )
{
g.setColor ( getBackground () );
g.fillRect ( 0, 0, getWidth (), getHeight () );
super.paintComponent ( g );
}
});
myPanel.setOpaque(false);
myPanel.setBackground(new Color(49,43,31,60));
}
Run Code Online (Sandbox Code Playgroud)
我很感激任何帮助.我想知道使Panels透明的最简单方法,没有任何工件风险.我需要一种可以调用的方法.此外,我尝试过,UIManager.put()但似乎没有适当的应用没有任何工件.
我很欣赏将透明度应用于项目的最简单的解决方案,因此我可以专注于创建表格.
java ×10
paintcomponent ×10
swing ×9
graphics ×3
jpanel ×2
debugging ×1
exception ×1
key-bindings ×1
null ×1
repaint ×1