java - 从命令提示符转变为 Netbeans

标签 java netbeans applet

我刚刚安装了 Netbeans IDE 7.0 并尝试基于图像处理运行我的项目(当我使用命令提示符以传统方法运行时,该项目执行良好),但小程序查看器显示 start: applet not初始化而编译(Netbeans 中的 build 任务)成功。

这里我附加了 2 个相关的 Java 文件,而整个项目还有 3-4 个用于图像渲染的 java 文件。

/* 
* <applet code=ImageFilterDemo width=350 height=450> 
* <param name=img value=strawberry.jpeg> 
* <param name=filters value="Grayscale+Invert+Contrast+Blur+Sharpen"> 
* </applet> 
*/  
import java.applet.*;  
import java.awt.*;  
import java.awt.event.*;  
import java.util.*;  
import java.awt.image.* ;  
public class ImageFilterDemo extends Applet implements ActionListener {  

Image img;  
PlugInFilter pif;  
Image fimg;  
Image curImg;  
LoadedImage lim;  
Label lab;  
Button reset;  
Button histograph;  

Dimension d;  
static int iw, ih;  
int pixels[];  
static int w, h,just;  
static int hist[] = new int[256];  
static int max_hist = 0;  

public void init() {  
setLayout(new BorderLayout());  
Panel p = new Panel();  
add(p, BorderLayout.SOUTH);  
reset = new Button("Reset");  
histograph = new Button("Histograph");  
reset.addActionListener(this);  
histograph.addActionListener(this);  
p.add(reset);  
p.add(histograph);  
StringTokenizer st = new StringTokenizer(getParameter("filters"), "+");  
while(st.hasMoreTokens()) {  
Button b = new Button(st.nextToken());  
b.addActionListener(this);  
p.add(b);  
}  
lab = new Label("");  
add(lab, BorderLayout.NORTH);  
img = getImage(getDocumentBase(),"strawberry.jpeg");  
lim = new LoadedImage(img);  
add(lim, BorderLayout.CENTER);  

d = getSize();  
w = d.width;  
h = d.height;  
try {  
//img = getImage(getDocumentBase(), getParameter("img"));  
MediaTracker t = new MediaTracker(this);  
t.addImage(img, 0);  
t.waitForID(0);  
iw = img.getWidth(null);  
ih = img.getHeight(null);  
pixels = new int[iw * ih];  
PixelGrabber pg = new PixelGrabber(img, 0, 0, iw, ih,  
pixels, 0, iw);  
pg.grabPixels();  
} catch (InterruptedException e) { };  
for (int i=0; i<iw*ih; i++) {  
int pii = pixels[i];  
int r = 0xff & (pii >> 16);  
int g = 0xff & (pii >> 8);  
int b = 0xff & (pii);  
int y = (int) (.33 * r + .56 * g + .11 * b);  
hist[y]++;  
}  
for (int i=0; i<256; i++) {  
if (hist[i] > max_hist)  
max_hist = hist[i];  
}  
}  

public void actionPerformed(ActionEvent ae) {  
String a = "";  
try {  
a = (String)ae.getActionCommand();  
if (a.equals("Reset")) {  
lim.set(img);  
lab.setText("Normal");  
}  
else if(a.equals("Histograph")){  
lab.setText("Histo_graph");  
just=1;  
lim.repaint();  
}   
else {  
pif = (PlugInFilter) Class.forName(a).newInstance();  
fimg = pif.filter(this, img);  
lim.set(fimg);  
lab.setText("Filtered: " + a);  
}  
repaint();  
} catch (ClassNotFoundException e) {  
lab.setText(a + " not found");  
lim.set(img);  
repaint();  
} catch (InstantiationException e) {  
lab.setText("could't new " + a);  
} catch (IllegalAccessException e) {  
lab.setText("no access: " + a);  
}  
}  
}  


// 2nd file
import java.awt.*;  

public class LoadedImage extends Canvas {  
Image img;  

public LoadedImage(Image i) {  
set(i);  
}  

void set(Image i) {  
MediaTracker mt = new MediaTracker(this);  
mt.addImage(i, 0);  
try {  
mt.waitForAll();  
} catch (InterruptedException e) { };  
img = i;  
repaint();  
}  


public void paint(Graphics g) {  
if (img == null) {  
g.drawString("no image", 10, 30);  
}  

else if(ImageFilterDemo.just==1){  
int x = (ImageFilterDemo.w - 256) / 2;  
int lasty = ImageFilterDemo.h - ImageFilterDemo.h * ImageFilterDemo.hist[0] / ImageFilterDemo.max_hist;  
for (int i=0; i<256; i++, x++) {  
int y = ImageFilterDemo.h - ImageFilterDemo.h * ImageFilterDemo.hist[i] / ImageFilterDemo.max_hist;  
g.setColor(new Color(i, i, i));  
g.fillRect(x, y, 1, ImageFilterDemo.h);  
g.setColor(Color.red);  
g.drawLine(x-1,lasty,x,y);  
lasty = y;  
}  
ImageFilterDemo.just=0;  
}   
else {  
g.drawImage(img, 0, 0, this);  
}  
}  

public Dimension getPreferredSize() {  
return new Dimension(img.getWidth(this), img.getHeight(this));  
}  
public Dimension getMinimumSize() {  
return getPreferredSize();  
}  
}  

当我们从传统命令提示符运行更改为 Netbeans 时,我们需要在设置或编码中进行任何更改吗?

最佳答案

我将在 NetBeans 中创建一个新项目,并看看它在默认情况下如何与 Applet 配合使用。

如果您将 Applet 添加到项目中(新文件 -> Swing GUI 表单 -> JApplet 表单)

查看为您生成的初始化代码

@Override
    public void init() {
        /* Create and display the applet */
        try {
            java.awt.EventQueue.invokeAndWait(new Runnable() {

                public void run() {
                    initComponents();
                }
            });
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

我认为您的代码需要这样的 block 才能在 NetBeans 中执行“文件运行”或“项目运行”

关于java - 从命令提示符转变为 Netbeans,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6759599/

相关文章:

java - 使用 JasperReport 生成报告书 - 如何使用 $V{MASTER CURRENT_PAGE} 忽略索引页

java - 按值对 Map<Key, Value> 进行排序

java - Play2 "include"指令覆盖配置并替换

java - 使用 Maven 和 Netbeans 将 java 源代码 1.7 编译为 1.6

java - 如何使用 ant 构建需要外部 jar 的小程序?

java - 导出的 jar 文件缺少对资源的访问

c++ - 在 Window 中的 NetBeans 上设置 OpenGL

c++ - Netbeans:需要 C/C++ 文件模板变量文档

Java 1.6 update 11 适用于 safari 5,但不适用于 java 1.6.25,为什么?

java - 如何在最新版本的 Eclipse IDE 中用 Java 创建小程序?