我在Java工作,我在JFrame中有一个JPanel.在那个JPanel中,除其他外,我有一个JLabel,我想让它出现并随意消失.我已经尝试将可见性设置为true/false,在JFrame和JPanel中添加和删除它,并且,在网上查看后,我尝试了验证()和无效地重新生成()无限广告.在这里可以做些什么来解决这个问题?
我的剧本有问题; 我想在按下按钮时重新绘制一个新图像(显示另一个图像),但该按钮不执行任何操作...
ActionListener one = new ActionListener() {
public void actionPerformed(ActionEvent e) {
panel2.revalidate();
panel2.repaint();
}
};
btn1.addActionListener(one);
JLabel test1 = new JLabel(myDeckOfCards.giveCardPlayer1().getImage());
panel2.add(lab1);
panel2.add(test1);
panel2.add(pn5);
panel2.add(pn1);
panel2.add(btn1);
Run Code Online (Sandbox Code Playgroud) 在我的程序中,我加载a JTextArea
以在单击按钮时显示一些文本.我添加了ActionListener
并编写了一个loadQuestion()
方法,但由于某种原因组件没有更新.该组件包含在另一个我通过get()
和set()
方法访问的文件中.我在loadQuestion()方法中运行了repaint()
和revalidate()
方法,并在方法中再次运行setTextArea()
,但它似乎仍然无法工作!任何指针将不胜感激 - 提前感谢
public void loadQuestion () {
JTextArea tempArea = quizDisplay.getTextArea();
String text = "Hello World!!";
tempArea.append("Hi");
quizDisplay.setTextArea(tempArea);
quizDisplay.revalidate();
quizDisplay.repaint();
}
Run Code Online (Sandbox Code Playgroud) 我想要做的就是在JTable
用户点击一个按钮时显示一些数据并且它可以正常工作,但是会发生一些奇怪的事情.当我第一次点击按钮时没有任何反应,但是当我最大化帧时,表格出现了!
ActionListener
b2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
boolean state = external.isSelected();
DefaultTableModel model = new DefaultTableModel(ManhattanTable(values), Headers(values));
JTable table = new JTable(model);
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
container.add(new JScrollPane(table));
table.setVisible(false);
if(state) {
PrintStream out = null;
try {
out = new PrintStream(new FileOutputStream("output.txt"));
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
System.setOut(out);
long start= System.currentTimeMillis();
Manhattan(values);
long end=System.currentTimeMillis();
out.println("time: "+(end-start)+" milliseconds");
out.println("Number of input data: "+values.size());
} else { …
Run Code Online (Sandbox Code Playgroud) 问题:我正在尝试使用基于用户操作的新绘制对象更新画布.画布剂量得到更新.
我做了什么:用户与DnD动作交互,可转移对象到达画布,调用由我创建的更新图形方法.并且该方法只需使用aldready创建的图形2D对象,并使用它.我已经checkd免打扰作用将图像,对象正确recived在Canvas类,我能打印出来使用System.out.println.
示例代码,具有与我的类似的功能,
油漆类:
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JPanel;
public class PaintPanel extends JPanel{
private Graphics2D drawImage;
public PaintPanel()
{
}
@Override
public void paint(Graphics g) {
drawImage = (Graphics2D) g;
drawImage.setColor(Color.WHITE);
drawImage.fillRect(0, 0, getWidth(), getHeight());
}
public void updateGraphics(int length,int width)
{
drawImage.setColor(Color.black);
drawImage.drawRect(100, 150, length, width);
repaint();
}
}
Run Code Online (Sandbox Code Playgroud)
大型机类:
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
public class MainPaint extends JFrame{
public MainPaint()
{
setTitle("test paint");
setSize(400,400);
setLayout(new BorderLayout());
final PaintPanel …
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坐标的情况下重新绘制访问时间值?
我有一个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) 对不起,如果我的标题有点模糊,但我想要做的是让按钮通向另一个屏幕.我正在做一个基本的游戏,所以会有几个.我目前正在尝试做的是选项屏幕.我已经找到了使用revalidate(),repaint()和多个面板执行此操作的基本方法,但每次打开另一个窗口并且看起来效率不高.
这是我的选项屏幕代码,用于处理从主菜单到自身的屏幕更改.
package menu;
import javax.swing.JFrame;
import javax.swing.JPanel;
import main.Window;
public class Options
{
JPanel pnlMain = Window.pnlMain;
JFrame frame = new main.Window();
JPanel pnlOptions = new JPanel();
public static Button graphics = new Button("Graphics");
public Options()
{
Listener listener = new Listener();
frame.add(pnlOptions);
frame.remove(pnlMain);
pnlMain.revalidate();
pnlMain.repaint();
pnlMain.setVisible(false);
pnlOptions.setVisible(true);
pnlOptions.add(graphics);
pnlOptions.revalidate();
pnlOptions.repaint();
graphics.addActionListener(listener);
}
Run Code Online (Sandbox Code Playgroud)
}
package menu;
import javax.swing.JFrame;
import javax.swing.JPanel;
import main.Window;
public class Options
{
JPanel pnlMain = Window.pnlMain;
JFrame frame = new main.Window();
JPanel pnlOptions = new …
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(),因为有些答案表明,但它没有用.
我正在尝试学习如何使用 java 创建一个游戏循环并每秒绘制一个新屏幕一定次数。游戏循环工作正常,但是当我尝试使用 repaint() 调用paint方法时,未调用paint方法。这是我的代码:
import javax.swing.JButton;
import javax.swing.JComponent;
import java.awt.Graphics;
import javax.swing.JFrame;
import java.awt.image.*;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import java.awt.event.*;
import java.awt.*;
import javax.swing.*;
public class mainFrame extends Thread{
static boolean gameIsRunning = false;
MyCanvas2 myCanvas2 = new MyCanvas2();
static final int TARGET_FPS = 1;
static int x = 10;
static int y = 10;
static long startTime = 0;
static long elapsedTime = 0;
static long waitTime = 0;
public void createFrame(){
JFrame window = new JFrame("Out from …
Run Code Online (Sandbox Code Playgroud) 这是我的应用程序的 main.dart 文件:
import 'package:flutter/material.dart';
main() {
runApp(
new MaterialApp(
title: 'Flutter Database Test',
theme: ThemeData(
textTheme: TextTheme(
display1: TextStyle(fontSize: 24.0, color: Colors.white),
display2: TextStyle(fontSize: 24.0, color: Colors.grey),
display3: TextStyle(fontSize: 18.0, color: Colors.black),
),
),
home: new MyHomePage(),
),
);
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => new _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
List<Color> color = [
Colors.white,
Colors.black,
Colors.pink,
Colors.blue,
Colors.red,
Colors.yellow,
Colors.orange,
Colors.green,
Colors.cyan,
Colors.purple,
Colors.brown,
Colors.indigo,
Colors.teal,
Colors.grey,
];
Color _pencolor = …
Run Code Online (Sandbox Code Playgroud) Java中的repaint()方法存在问题.我创建了一个不断重新绘制屏幕的新线程.当我释放空格键时,我希望我的播放器通过设置其位置然后等待50毫秒并循环20次来顺利下降.相反,它在循环中等待整个时间,然后重新绘制.我想知道为什么它不会不断重现球员坐标的变化.谢谢.
(编辑)感谢大家的帮助.这是我第一次使用堆栈溢出,而我只有13,仍在学习java,所以我可能会再次回到教程.
我的'一级'(主要):
public class a {
public static void main(String[] args) {
JFrame frame = new JFrame("StickFigure Game");
frame.setSize(740, 580);
frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
b board = new b();
frame.add(board);
frame.addKeyListener(board);
}
}
Run Code Online (Sandbox Code Playgroud)
我的'b'级(JPanel /绘图):
public class b extends JPanel implements KeyListener {
c player = new c();
public class MyRunnable implements Runnable {
public void run() {
while (true)
repaint();
}
}
MyRunnable run = new MyRunnable();
public void paint(Graphics g) {
super.paint(g);
Graphics2D g2d = (Graphics2D) …
Run Code Online (Sandbox Code Playgroud) 这是我的油漆代码的一个非常简短的版本.请你能告诉我如何阻止它闪烁.感谢您使用JPanel的想法.
public void paint(Graphics g ) {
g.fillRect(BulletX, BulletY,0,0);
g.setColor(Color.yellow);
try{
FileInputStream saveFile = new FileInputStream("Wins1.sav");
ObjectInputStream save = new ObjectInputStream(saveFile);
wins1 = (int) save.readObject();
save.close();
}
catch(Exception exc){
exc.printStackTrace();
}
Image image;
URL resource = getClass().getClassLoader().getResource("moon1.jpg");
URL resource1 = getClass().getClassLoader().getResource("Tank.jpg");
URL resource2 = getClass().getClassLoader().getResource("Tank2.jpg");
ImageIcon i2 = new ImageIcon(resource);
ImageIcon i1 = new ImageIcon(resource1);
ImageIcon i3 = new ImageIcon(resource2);
image = i2.getImage();
g.drawImage(image, 0,0,null);
if (SHOW.equals("ON")){
g.setFont(new Font("TimesRoman", Font.BOLD, 30));
g.drawString("Player 1's health ="+Integer.toString(Player1H), 50, 25);}
if (wins == …
Run Code Online (Sandbox Code Playgroud)