import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
class PanelTest extends JPanel
{
String path = "" ;
public PanelTest (String path)
{
this.path = path ;
repaint () ;
}
public PanelTest ()
{
path = "image/Background1.jpg" ;
}
public void paintComponent (Graphics g)
{
super.paintComponent(g) ;
g.drawImage(getImage(), 0, 0, this) ;
}
public Image getImage()
{
ImageIcon icon = new ImageIcon (PanelTest.class.getResource(path)) ;
return icon.getImage() ;
}
}
public class FrameTest extends JFrame
{
JMenuBar bar ;
JMenu menu ;
JMenuItem item ;
public FrameTest ()
{
bar = new JMenuBar () ;
menu = new JMenu ("test") ;
item = new JMenuItem ("test") ;
item.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
new PanelTest ("image/Background2.jpg") ;
}
});
menu.add(item) ;
bar.add(menu) ;
bar.setBounds(0, 0, 400, 30) ;
this.add(bar) ;
this.add(new PanelTest()) ;
this.setVisible(true) ;
this.setSize(400,400) ;
}
public static void main (String [] args)
{
new FrameTest () ;
}
}
1.一个主类jframe里面加一个类jpanel,然后点击frame里面的jmenuitem让jpanel从新的地址得到一张新图片然后重绘,目的是这样,但是为什么不行呢?代码加上包名后直接复制就可以运行,在该包下有一个名为image的文件夹,里面放着图片。
2.这个java文件中有两个类,那么在运行的时候,只生成一个线程就是主线程对吧?
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
class PanelTest extends JPanel {
String path = "";
public PanelTest(String path) {
this.path = path;
}
public PanelTest() {
path = "image/Background2.jpg";
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(getImage(), 0, 0, this);
}
public Image getImage() {
ImageIcon icon = new ImageIcon(PanelTest.class.getResource(path));
return icon.getImage();
}
}
public class FrameTest extends JFrame {
JMenuBar bar;
JMenu menu;
JMenuItem item;
PanelTest panelTest;
public FrameTest() {
bar = new JMenuBar();
menu = new JMenu("test");
item = new JMenuItem("test");
item.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
remove(panelTest);
add(new PanelTest("image/Background2.jpg"));
invalidate();
repaint();
setVisible(true);
}
});
menu.add(item);
bar.add(menu);
bar.setBounds(0, 0, 400, 30);
this.add(bar);
panelTest=new PanelTest();
this.add(panelTest);
this.setVisible(true);
this.setSize(400, 400);
}
public static void main(String[] args) {
new FrameTest();
}
}
new PanelTest ("image/Background2.jpg") ; 你这只new一个对象,没有添加到jframe上