帮我看下这个程序:Java

时间:2023-02-21 10:17:21
帮我看下这个程序:
自己刚学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


引用 2 楼 steven_linqing 的回复:
Java codepackage 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;publicclass 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 PanelListenerimplements ActionListener {publicvoid actionPerformed(ActionEvent e) {if (e.getSource()== button_first) {
                label.setIcon(new ImageIcon("F:/2.jpg"));
            }elseif (e.getSource()== button_up) {
                label.setIcon(new ImageIcon("F:/3.jpg"));
            }elseif (e.getSource()== button_down) {
                label.setIcon(new ImageIcon("F:/4.jpg"));
            }else {
                label.setIcon(new ImageIcon("F:/5.jpg"));
            }
        }
    }publicstaticvoid main(String[] args) {new TestJFrame();
    }
}
 用我的吧,把图片改成你的图片即可。
这个貌似还是不行的。出不来啊~

#4


为什么不行?我试过了,行的。把图片改成自己的就行了。

#5


引用 4 楼 steven_linqing 的回复:
为什么不行?我试过了,行的。把图片改成自己的就行了。

我是个水手,我也不知道我说的对不。也是刚开始学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);
就可以啦。

#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


引用 2 楼 steven_linqing 的回复:
Java codepackage 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;publicclass 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 PanelListenerimplements ActionListener {publicvoid actionPerformed(ActionEvent e) {if (e.getSource()== button_first) {
                label.setIcon(new ImageIcon("F:/2.jpg"));
            }elseif (e.getSource()== button_up) {
                label.setIcon(new ImageIcon("F:/3.jpg"));
            }elseif (e.getSource()== button_down) {
                label.setIcon(new ImageIcon("F:/4.jpg"));
            }else {
                label.setIcon(new ImageIcon("F:/5.jpg"));
            }
        }
    }publicstaticvoid main(String[] args) {new TestJFrame();
    }
}
 用我的吧,把图片改成你的图片即可。
这个貌似还是不行的。出不来啊~

#4


为什么不行?我试过了,行的。把图片改成自己的就行了。

#5


引用 4 楼 steven_linqing 的回复:
为什么不行?我试过了,行的。把图片改成自己的就行了。

我是个水手,我也不知道我说的对不。也是刚开始学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);
就可以啦。

#7


谢谢大家,真是太感谢了!

#8


东西一般要加在内容板上