我刚刚开始学习java。它有点整洁,但是我用一些我想象的简单的东西撞墙。这是我正在做的工作的一部分:
import javax.swing.JApplet;
import javax.swing.JOptionPane;
import java.awt.Graphics;
import java.awt.Color;
@SuppressWarnings("serial")
public class DrawingShapes extends JApplet
{
public static void main( String [] args )
{
int rgb = 0;
boolean useful = false;
String number = JOptionPane.showInputDialog("Make this easy for me.\n"
+"Type an integer between 0 and 255");
do
{
try
{
rgb = Integer.parseInt( number );
if (rgb > 0 && rgb < 255)
{
useful = true;
}
else
{
useful = false;
}
}
catch ( NumberFormatException nfe )
{
number = JOptionPane.showInputDialog( null, "\"" + number + "\""
+ " is not an integer between 0 and 255!\n"
+ "Lrn2 be doin' it right!" );
}
}
while ( !useful );
JOptionPane.showMessageDialog( null, "The integer is " + rgb);
}
}
这个想法是对话框要求一个数字,如果不是数字则显示错误并再次询问。实际上,现在很好用。但是,我想要的是使用该数字(rgb)来创建在此类之外的applet中使用的灰色阴影。
Color shade = new Color(rgb,rgb,rgb);
这不起作用,因为它无法从另一个类中读取变量。或者,它可能,但我认为我需要帮助弄清楚如何。
简而言之,我需要阅读输入,验证它,并且以后仍然可以将其用于其他内容。我落后于这个目标,所以我来筹备指导。
编辑:Dans建议真的帮助了我变量,但现在我遇到了无法绘制图形的问题。退出对话框后,小程序立即关闭。所以我仍然有点难过。我只需要绘制一些简单的形状,使用输入对话框中的颜色作为背景。代码的后半部分现在看起来像这样:public static void main(String[] args)
{
new DrawingShapes().getColor();
}
public class Shade
{
private int color;
public void setColor(int col)
{
color = col;
System.out.println(color);
}
public void paint (Graphics canvas)
{
int col = color;
Color gray = new Color(col,col,col);
setBackground(gray)
setSize(500, 500);
canvas.drawOval(0, 0, 500, 500);
canvas.draw....[blablabla other shapes]
}
}
除非我注释掉导致它的所有内容,否则它会完全跳过绘画选项...
答案 0 :(得分:0)
请参阅以下代码以了解可能的解决方案。我创建了一个名为Shade的新类,它有一个私有字段,可以使用公共setter方法从另一个类(您的类或任何其他类)设置。
请注意我改变了你的课程,因为主要方法中的所有内容都不是很好,这是静态的。
import javax.swing.JApplet;
import javax.swing.JOptionPane;
public class DrawingShapes extends JApplet {
private Shade shade = new Shade();
private void readColor() {
int rgb = 0;
boolean useful = false;
String number = JOptionPane.showInputDialog("Make this easy for me.\n" + "Type an integer between 0 and 255");
do {
try {
rgb = Integer.parseInt(number);
if (rgb > 0 && rgb < 255) {
useful = true;
shade.setColor(rgb);
} else {
useful = false;
}
} catch (NumberFormatException nfe) {
number = JOptionPane.showInputDialog(null, "\"" + number + "\"" + " is not an integer between 0 and 255!\n"
+ "Lrn2 be doin' it right!");
}
} while (!useful);
JOptionPane.showMessageDialog(null, "The integer is " + rgb);
}
public static void main(String[] args) {
new DrawingShapes().readColor();
}
public class Shade {
private int color;
public void setColor(int col) {
color = col;
System.out.println("The chosen color shade is " + color);
}
}
}