自己刚学JAVA,不大懂,这个程序有点问题。实现不了功能,编译总有一个错误:进行语法解析时已到达文件末尾。
题目是这样的:
编写一个程序,功能如下,用户当点击第一幅,上一幅,下一幅,最后一幅四个按钮,
可以浏览程序如下中加载好的5幅图片,实现一个简单的图片浏览器。
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
class DrawImage extends JPanel
{
int x=100,y=200;
int m=100,n=300;
int l=100,k=400;
int g=100,w=500;
public void paintComponent(Graphics g){
super.paintComponent(g);
Image fir=Toolkit.getDefaultToolkit().getImage("1.jpg");
g.drawImage(fir,x,y,this);
Image sec=Toolkit.getDefaultToolkit().getImage("2.jpg");
g.drawImage(sec,m,n,this);
Image thi=Toolkit.getDefaultToolkit().getImage("3.jpg");
g.drawImage(thi,l,k,this);
Image la=Toolkit.getDefaultToolkit().getImage("4.jpg");
g.drawImage(la,g,w,this);
}
public class EX1308 extends JFrame implements ActionListener
{
JButton first;
JButton second;
JButton third;
JButton last;
JPanel p1,p2;
EX1308()
{
DrawImage christmasCard=new DrawImage();
super("简单浏览器");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container c=getContentPane();
c.setLayout(new FlowLayout());
p1=new JPanel();
p2=new JPanel();
first=new JButton("第一幅");
second=new JButton("上一幅");
third=new JButton("下一幅");
last=new JButton("最后一幅");
p2.add(first);
p2.add(second);
p2.add(third);
p2.add(last);
p1.add(christmasCard);
p1.setBackground(new Color(255,0,0));
p2.setBackground(new Color(0,255,0));
c.add(p1);
c.add(p2);
first.addActionListener(this);
second.addActionListener(this);
third.addActionListener(this);
last.addActionListener(this);
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==first)
{fir.setVisible(true);}
else if(e.getSource()==second)
{sec.setVisible(true);}
else if(e.getSource()==third)
{thi.setVisible(true);}
else if(e.getSource()==last)
{la.setVisible(true);}
}
public static void main(String args[])
{
EX1308 em=new EX1308();
em.setSize(500,500);
em.show();
}
}
8 个解决方案
#1
在另一张帖子里给你回复了
#2
package com.linqing.dao;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenuBar;
import javax.swing.JPanel;
public class TestJFrame {
private JFrame frame;
private JMenuBar menubar;
private JPanel panel;
private JLabel label;
private JButton button_first, button_up, button_down, button_last;
public TestJFrame() {
frame = new JFrame("制作图片浏览器");
panel = new JPanel();
menubar = new JMenuBar();
label = new JLabel(new ImageIcon("F:/1.jpg"));
button_first = new JButton("第一幅");
button_up = new JButton("上一幅");
button_down = new JButton("下一幅");
button_last = new JButton("最后一幅");
PanelListener listener = new PanelListener();
button_first.addActionListener(listener);
button_up.addActionListener(listener);
button_down.addActionListener(listener);
button_last.addActionListener(listener);
menubar.add(button_first);
menubar.add(button_up);
menubar.add(button_down);
menubar.add(button_last);
panel.add(label);
frame.setJMenuBar(menubar);
frame.add(panel);
frame.setSize(300, 500);
frame.setLocation(400, 100);
frame.setVisible(true);
}
class PanelListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
if (e.getSource() == button_first) {
label.setIcon(new ImageIcon("F:/2.jpg"));
} else if (e.getSource() == button_up) {
label.setIcon(new ImageIcon("F:/3.jpg"));
} else if (e.getSource() == button_down) {
label.setIcon(new ImageIcon("F:/4.jpg"));
} else {
label.setIcon(new ImageIcon("F:/5.jpg"));
}
}
}
public static void main(String[] args) {
new TestJFrame();
}
}
用我的吧,把图片改成你的图片即可。
#3
这个貌似还是不行的。出不来啊~
#4
为什么不行?我试过了,行的。把图片改成自己的就行了。
#5
我是个水手,我也不知道我说的对不。也是刚开始学JAVA的。~
下面这是运行后出现的:
--------------------Configuration: <Default>--------------------
java.lang.Error: Do not use javax.swing.JFrame.add() use javax.swing.JFrame.getContentPane().add() instead
at javax.swing.JFrame.createRootPaneException(JFrame.java:458)
at javax.swing.JFrame.addImpl(JFrame.java:484)
at java.awt.Container.add(Container.java:307)
at com.linqing.dao.TestJFrame.<init>(TestJFrame.java:53)
at com.linqing.dao.TestJFrame.main(TestJFrame.java:73)
Exception in thread "main"
Process completed.
还望指教一下~
#6
把
frame.add(panel);
改为
frame.getContentPane().add(panel);
就可以啦。
frame.add(panel);
改为
frame.getContentPane().add(panel);
就可以啦。
#7
谢谢大家,真是太感谢了!
#8
东西一般要加在内容板上
#1
在另一张帖子里给你回复了
#2
package com.linqing.dao;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenuBar;
import javax.swing.JPanel;
public class TestJFrame {
private JFrame frame;
private JMenuBar menubar;
private JPanel panel;
private JLabel label;
private JButton button_first, button_up, button_down, button_last;
public TestJFrame() {
frame = new JFrame("制作图片浏览器");
panel = new JPanel();
menubar = new JMenuBar();
label = new JLabel(new ImageIcon("F:/1.jpg"));
button_first = new JButton("第一幅");
button_up = new JButton("上一幅");
button_down = new JButton("下一幅");
button_last = new JButton("最后一幅");
PanelListener listener = new PanelListener();
button_first.addActionListener(listener);
button_up.addActionListener(listener);
button_down.addActionListener(listener);
button_last.addActionListener(listener);
menubar.add(button_first);
menubar.add(button_up);
menubar.add(button_down);
menubar.add(button_last);
panel.add(label);
frame.setJMenuBar(menubar);
frame.add(panel);
frame.setSize(300, 500);
frame.setLocation(400, 100);
frame.setVisible(true);
}
class PanelListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
if (e.getSource() == button_first) {
label.setIcon(new ImageIcon("F:/2.jpg"));
} else if (e.getSource() == button_up) {
label.setIcon(new ImageIcon("F:/3.jpg"));
} else if (e.getSource() == button_down) {
label.setIcon(new ImageIcon("F:/4.jpg"));
} else {
label.setIcon(new ImageIcon("F:/5.jpg"));
}
}
}
public static void main(String[] args) {
new TestJFrame();
}
}
用我的吧,把图片改成你的图片即可。
#3
这个貌似还是不行的。出不来啊~
#4
为什么不行?我试过了,行的。把图片改成自己的就行了。
#5
我是个水手,我也不知道我说的对不。也是刚开始学JAVA的。~
下面这是运行后出现的:
--------------------Configuration: <Default>--------------------
java.lang.Error: Do not use javax.swing.JFrame.add() use javax.swing.JFrame.getContentPane().add() instead
at javax.swing.JFrame.createRootPaneException(JFrame.java:458)
at javax.swing.JFrame.addImpl(JFrame.java:484)
at java.awt.Container.add(Container.java:307)
at com.linqing.dao.TestJFrame.<init>(TestJFrame.java:53)
at com.linqing.dao.TestJFrame.main(TestJFrame.java:73)
Exception in thread "main"
Process completed.
还望指教一下~
#6
把
frame.add(panel);
改为
frame.getContentPane().add(panel);
就可以啦。
frame.add(panel);
改为
frame.getContentPane().add(panel);
就可以啦。
#7
谢谢大家,真是太感谢了!
#8
东西一般要加在内容板上