这是我在主框架窗口中的代码:
public class DynamicalSystem {
public static void createAndShowGraphic() {
//Create and set up the window.
JFrame frame = new JFrame("Dynamical System: The beauty of Chaos");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JLabel emptyLabel = new JLabel("");
emptyLabel.setPreferredSize(new Dimension(500, 500));
frame.getContentPane().add(emptyLabel, BorderLayout.CENTER);
//Display the window.
MenuLook menubar = new MenuLook(); //display menubar
frame.setJMenuBar(menubar.createMenuBar());
frame.pack();
frame.setVisible(true);
}
}
这是来自我的bufferdimage:
public class LabelDemo extends JPanel
{
//path of image
private String path;
//image object
private Image img;
public LabelDemo(String path) throws IOException
{
//save path
this.path = path;
//load image
img = ImageIO.read(new File(path));
}
//override paint method of panel
public void paint(Graphics g)
{
//draw the image
if( img != null)
g.drawImage(img,0,0, this);
}
}
//class image frame periexei tin methodo createloadimage i opoia pernei
//to path apo ton filechooser kai kanei load tin eikona
class ImageFrame{
public static void createLoadImage(){
try
{
//create frame
JFrame f = new JFrame();
//ask for image file
JFileChooser chooser = new JFileChooser();
chooser.showOpenDialog(f);
//create panel with selected file
LabelDemo panel = new LabelDemo( chooser.getSelectedFile().getPath() );
//add panel to pane
f.getContentPane().add(panel);
//show frame
f.setBounds(0,0,800,800);
f.setVisible(true);
}
catch(Exception e)
{
System.out.println ( "Den dialeksate eikona!");
}
}
}
我希望图片在我的主窗口中打开而不是在新窗口中打开。我怎么能这样做?
答案 0 :(得分:1)
也许我错过了一些东西,但看起来你实际上并没有把你的图像放在主框架中,从你的问题看起来似乎是DynamicalSystem。相反,它看起来像是在ImageFrame中创建一个新窗口并将图像放在那里。尝试拨打
LabelDemo panel = new LabelDemo( chooser.getSelectedFile().getPath() );
并将LabelDemo放在该帧中而不是ImageFrame。