gpt4 book ai didi

java - 打开的图像不出现

转载 作者:行者123 更新时间:2023-12-01 04:55:50 25 4
gpt4 key购买 nike

//编辑:我编辑的问题,因为我不想在这里搞乱;)你好。这是我有问题的两门课。在程序中,其中一个具有子类打开和显示图像的类效果很好,但是当我将一些代码添加到两个类时,它不起作用(在 JPanel 中显示图像)。我知道这太多了,但没有办法;]

public class przegladarka_3 {

public static void main(String[] args){
uklad_gl okno_gl=new uklad_gl(true,800,600,"Przeglądarka plików graficznych 1.0 alfa");
okno_gl.setResizable(false);
okno_gl.setLocationRelativeTo(okno_gl);
okno_gl.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}


class uklad_gl extends JFrame{

JPanel rozklad=new JPanel();
JPanel rozklad2;
JScrollPane zwijanie; //panel dla suwaków
JMenuBar pasek_meni;
JMenuItem wybor;
JMenu[] pdp; //Plik Dodaj Pomoc

String[] tab_pasek;
String[] tab1; //wybory dla Plik
String[] tab2; //Dodaj
String[] tab3; //Pomoc

JFileChooser otworz,zapisz_jako;
ActionListener wykonaj_plik=new uklad_gl.klasa_zadan();
ActionListener wykonaj_dzialanie=new uklad_gl.klasa_zadan();
ActionListener wykonaj_pomoc=new uklad_gl.klasa_zadan();


public uklad_gl(boolean b, int wys, int szer, String tytul){
setVisible(b);
setSize(wys, szer);
setTitle(tytul);


rozklad2=new JPanel(new BorderLayout());
add(rozklad,BorderLayout.PAGE_END);
add(rozklad2,BorderLayout.LINE_END);

zwijanie=new JScrollPane(rozklad);

pasek_postepu=new JProgressBar(1,100);
pasek_postepu.setValue(0);
pasek_postepu.setStringPainted(true);
pasek_postepu.setBounds(600, 200, 110,500);

stworz_caly_pasek_meni("Plik,Dodaj,Pomoc");

}



public void stworz_caly_pasek_meni(String lista_pasek){

tab_pasek=lista_pasek.split(",");
pasek_meni=new JMenuBar();
pdp=new JMenu[tab_pasek.length];
rozklad.add(pasek_meni);
setJMenuBar(pasek_meni);

for(int i=0;i<tab_pasek.length;i++){

pdp[i]=new JMenu(tab_pasek[i]);
setJMenuBar(pasek_meni);
pasek_meni.add(pdp[i]);

if(i==0) stworz_Plik("Otwórz,Zapisz,Zapisz jako...,Zamknij",wykonaj_plik);
else if(i==1) stworz_Dzialanie("Odcienie szarości,Sepia,Negatyw,Nasycenie barw",wykonaj_dzialanie);
else stworz_Pomoc("O mnie, O programie, Najczęściej zadawane pytania",wykonaj_pomoc);

}
}

public void stworz_Plik(String lista_Plik,ActionListener e){

tab1=lista_Plik.split(",");

for(int i=0;i<tab1.length;i++){

wybor=new JMenuItem(tab1[i]);
pdp[0].add(wybor);
wybor.addActionListener(e);

}
}

public void stworz_Dzialanie(String lista_Dodaj,ActionListener e){

tab2=lista_Dodaj.split(",");

for(int i=0;i<tab2.length;i++){

wybor=new JMenuItem(tab2[i]);
pdp[1].add(wybor);
wybor.addActionListener(e);

}
}

public void stworz_Pomoc(String lista_Pomoc,ActionListener e){

tab3=lista_Pomoc.split(",");

for(int i=0;i<tab3.length;i++){

wybor=new JMenuItem(tab3[i]);
pdp[2].add(wybor);
wybor.addActionListener(e);

}
}

public class klasa_zadan implements ActionListener,WindowListener,ComponentListener,MouseListener{
BufferedImage obraz;


public void actionPerformed(ActionEvent e){
String polecenie=e.getActionCommand();

if(polecenie.equals("Otwórz")) try {
otworz();
} catch (IOException ex) {
Logger.getLogger(uklad_gl.class.getName()).log(Level.SEVERE, null, ex);
}


}

public void otworz() throws IOException{
otworz=new JFileChooser("C://");
FileNameExtensionFilter rastrowa=new FileNameExtensionFilter("Pliki grafiki rastrowej(.jpeg,.png.,gif...)", "jpeg","jpg", "gif","png","bmp");

otworz.setFileFilter(rastrowa);

int a=otworz.showOpenDialog(null);

if(a==JFileChooser.APPROVE_OPTION){
String nazwa_pliku=otworz.getSelectedFile().getAbsolutePath();
String roz=nazwa_pliku.substring(nazwa_pliku.lastIndexOf('.')+1);

obraz=ImageIO.read(otworz.getSelectedFile());
rozklad=new JPanel(){

protected void paintComponent(Graphics g){
Graphics g2 = g.create();
g2.drawImage(obraz, 0, 0, getWidth(), getHeight(), null);
g2.dispose();
}
};
add(rozklad);
revalidate();
repaint();
}
}
}
}

*********新类(class)********

public class klasa_zadan extends JFrame implements ActionListener,WindowListener,ComponentListener,MouseListener{

BufferedImage obraz;

JFileChooser otworz,zapisz_jako;

public void actionPerformed(ActionEvent e){
try {
String polecenie=e.getActionCommand();

if(polecenie.equals("Otwórz"))
otworz();

if(polecenie.equals("Zapisz jako...")) zapisz_jako();

if(polecenie.equals("Zamknij")) zamknij();
} catch (IOException ex) {
Logger.getLogger(zadania_plik.class.getName()).log(Level.SEVERE, null, ex);
}
}

public void otworz() throws IOException{
otworz=new JFileChooser("C://");

FileNameExtensionFilter rastrowa=new FileNameExtensionFilter("Pliki grafiki rastrowej(.jpeg,.png.,gif...)", "jpeg","jpg", "gif","png","bmp");
otworz.setFileFilter(rastrowa);
int a=otworz.showOpenDialog(null);

if(a==JFileChooser.APPROVE_OPTION){
String nazwa_pliku=otworz.getSelectedFile().getAbsolutePath();
// String roz=nazwa_pliku.substring(nazwa_pliku.lastIndexOf('.')+1);

final BufferedImage obraz=ImageIO.read(otworz.getSelectedFile());
final JPanel rozklad=new JPanel(new BorderLayout()){
protected void paintComponent(Graphics g){
Graphics g2 = (Graphics2D)g;
g2.drawImage(obraz, 0, 0,this);
//g2.dispose();
}
};
Dimension rozmiar=new Dimension(obraz.getWidth(),obraz.getHeight());
add(rozklad);
revalidate();
repaint();
}
}

public void zapisz() throws IOException{
File plik=zapisz_jako.getSelectedFile();
String nazwa_pliku=plik.getAbsolutePath();
String roz=null;
roz=nazwa_pliku.substring(nazwa_pliku.lastIndexOf(".")+1);
ImageIO.write(obraz, roz, plik); //niewiadomo, czy ta metoda działa!!!!
}


public void zapisz_jako(){ //zapisanie pliku do innego formatu jest uzależnione od rodzaju pliku graficznego
zapisz_jako=new JFileChooser("C://");
zapisz_jako.setSelectedFile(new File("beznazwy.jpg")); //tworzy plik, który będzie zapisany z domyślną nazwą
zapisz_jako.setFileSelectionMode(JFileChooser.FILES_ONLY);

FileNameExtensionFilter rastrowa=new FileNameExtensionFilter("Pliki grafiki rastrowej(.jpeg,.png.,gif...)", "jpeg","jpg", "gif","png","bmp");
zapisz_jako.setFileFilter(rastrowa);

int a=zapisz_jako.showSaveDialog(null);

if(a==JFileChooser.APPROVE_OPTION){
File plik=zapisz_jako.getSelectedFile();
String nazwa_pliku=plik.getAbsolutePath();
String roz=null;

if(nazwa_pliku.indexOf(".jpg")==-1 && nazwa_pliku.indexOf(".png")==-1 && nazwa_pliku.indexOf(".gif")==-1){
nazwa_pliku+=".jpg"; //zostaw jpg jako domyślny
roz="jpg";
plik=new File(nazwa_pliku);
}

else{
roz=nazwa_pliku.substring(nazwa_pliku.lastIndexOf(".")+1);
try {
ImageIO.write(obraz, roz, plik);
} catch (IOException ex) {
Logger.getLogger(zadania_plik.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
}

public void zamknij(){
int tn=JOptionPane.showConfirmDialog(null,
"Czy na pewno chcesz zakończyć działanie z programem?","Widaomość",
JOptionPane.YES_NO_OPTION,0,null);

if(tn==0) System.exit(0);
}
}

================================================== =======

public class uklad_gl extends JFrame{

JPanel rozklad;
JScrollPane zwijanie; //panel dla suwaków

JMenuBar pasek_meni;
JMenuItem wybor;
JMenu[] pdp; //Plik Dodaj Pomoc

JScrollPane suwak1,suwak2;
JProgressBar pasek_postepu;

String[] tab_pasek;
String[] tab1; //wybory dla Plik
String[] tab2; //Dodaj
String[] tab3; //Pomoc

JFileChooser otworz,zapisz_jako;
ActionListener wykonaj_plik=new zadania_plik();
ActionListener wykonaj_dzialanie=new zadania_dodaj();
ActionListener wykonaj_pomoc=new zadania_pomoc();

public uklad_gl(boolean b, int wys, int szer, String tytul){
setVisible(b);
setSize(wys, szer);
setTitle(tytul);

rozklad=new JPanel(new BorderLayout());

zwijanie=new JScrollPane(rozklad);

stworz_caly_pasek_meni("Plik,Dodaj,Pomoc");
stworz_suwaki(wykonaj_plik);

}

public void stworz_suwaki(ActionListener e){
//jeszcze nie działają
suwak1=new JScrollPane();
suwak2=new JScrollPane();
rozklad.add(suwak1);
rozklad.add(suwak2);

}

public void stworz_caly_pasek_meni(String lista_pasek){
tab_pasek=lista_pasek.split(",");
pasek_meni=new JMenuBar();
pdp=new JMenu[tab_pasek.length];
rozklad.add(pasek_meni);
setJMenuBar(pasek_meni);

for(int i=0;i<tab_pasek.length;i++){

pdp[i]=new JMenu(tab_pasek[i]);
setJMenuBar(pasek_meni);
pasek_meni.add(pdp[i]);

if(i==0) stworz_Plik("Otwórz,Zapisz,Zapisz jako...,Zamknij",wykonaj_plik);
else if(i==1) stworz_Dzialanie("Odcienie szarości,Sepia,Negatyw,Nasycenie barw",wykonaj_dzialanie);
else stworz_Pomoc("O mnie, O programie, Najczęściej zadawane pytania",wykonaj_pomoc);
}
}

public void stworz_Plik(String lista_Plik,ActionListener e){
tab1=lista_Plik.split(",");

for(int i=0;i<tab1.length;i++){
wybor=new JMenuItem(tab1[i]);
pdp[0].add(wybor);
wybor.addActionListener(e);
}
}

public void stworz_Dzialanie(String lista_Dodaj,ActionListener e){
tab2=lista_Dodaj.split(",");

for(int i=0;i<tab2.length;i++){
wybor=new JMenuItem(tab2[i]);
pdp[1].add(wybor);

}
}

public void stworz_Pomoc(String lista_Pomoc,ActionListener e){
tab3=lista_Pomoc.split(",");

for(int i=0;i<tab3.length;i++){
wybor=new JMenuItem(tab3[i]);
pdp[2].add(wybor);
wybor.addActionListener(e);
}
}
}

最佳答案

几个小问题。我认为是invokeLater。

我给了面板一个首选尺寸。

假设组件类(JFrame?)有一个 BorderLayout,我选择了另一个 add

public void otworz() throws IOException {
JFileChooser otworz = new JFileChooser("C:/"); // Or "C:\\"

FileNameExtensionFilter rastrowa = new FileNameExtensionFilter("Pliki grafikirastrowej(.jpeg,.png.,gif...)", "jpeg", "jpg", "gif", "png", "bmp");
otworz.setFileFilter(rastrowa);
int a = otworz.showOpenDialog(null);
if (a == JFileChooser.APPROVE_OPTION) {
String nazwa_pliku = otworz.getSelectedFile().getAbsolutePath();
//String roz = nazwa_pliku.substring(nazwa_pliku.lastIndexOf('.') + 1);

final BufferedImage obraz = ImageIO.read(otworz.getSelectedFile());
final JPanel rozklad = new JPanel(new BorderLayout()) {
@Override
protected void paintComponent(Graphics g) {
Graphics g2 = (Graphics2D)g; //g.create();
g2.drawImage(obraz, 0, 0, this);
//g2.dispose();
}
};
Dimension size = new Dimension(obraz.getWidth(), obraz.getHeight());
rozklad.setPreferredSize(size);
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
add(rozklad, BorderLayout.CENTER);
revalidate();
repaint();
}
});
}
}

附注你也可以使用 JLabel;这更简单。

               add(new JLabel(new ImageIcon(obraz)), BorderLayout.CENTER);
<小时/>

编辑后

我尝试使用所有类。我必须做出一些更正。例如,obraz 被声明为字段和局部变量,因此一个隐藏了另一个。我使用了NetBeans IDE,并给出了一些警告和纠正建议。

przegladarka_3

import javax.swing.JFrame;

public class przegladarka_3 {

public static void main(String[] args) {
uklad_gl okno_gl = new uklad_gl(true, 800, 600, "Przeglądarka plików graficznych 1.0 alfa");
okno_gl.setResizable(false);
okno_gl.setLocationRelativeTo(okno_gl);
okno_gl.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

uklad_gl

import java.awt.BorderLayout;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.imageio.ImageIO;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.filechooser.FileNameExtensionFilter;

class uklad_gl extends JFrame {

JPanel rozklad = new JPanel();
JPanel rozklad2;
JScrollPane zwijanie; //panel dla suwaków
JMenuBar pasek_meni;
JMenuItem wybor;
JMenu[] pdp; //Plik Dodaj Pomoc
String[] tab_pasek;
String[] tab1; //wybory dla Plik
String[] tab2; //Dodaj
String[] tab3; //Pomoc
JFileChooser otworz, zapisz_jako;
ActionListener wykonaj_plik = new uklad_gl.klasa_zadan();
ActionListener wykonaj_dzialanie = new uklad_gl.klasa_zadan();
ActionListener wykonaj_pomoc = new uklad_gl.klasa_zadan();

public uklad_gl(boolean b, int wys, int szer, String tytul) {
setVisible(b);
setSize(wys, szer);
setTitle(tytul);


rozklad2 = new JPanel(new BorderLayout());
add(rozklad, BorderLayout.PAGE_END);
add(rozklad2, BorderLayout.LINE_END);

zwijanie = new JScrollPane(rozklad);

// pasek_postepu = new JProgressBar(1, 100);
// pasek_postepu.setValue(0);
// pasek_postepu.setStringPainted(true);
// pasek_postepu.setBounds(600, 200, 110, 500);

stworz_caly_pasek_meni("Plik,Dodaj,Pomoc");

}

public final void stworz_caly_pasek_meni(String lista_pasek) {

tab_pasek = lista_pasek.split(",");
pasek_meni = new JMenuBar();
pdp = new JMenu[tab_pasek.length];
rozklad.add(pasek_meni);
setJMenuBar(pasek_meni);

for (int i = 0; i < tab_pasek.length; i++) {

pdp[i] = new JMenu(tab_pasek[i]);
setJMenuBar(pasek_meni);
pasek_meni.add(pdp[i]);

if (i == 0) {
stworz_Plik("Otwórz,Zapisz,Zapisz jako...,Zamknij", wykonaj_plik);
} else if (i == 1) {
stworz_Dzialanie("Odcienie szarości,Sepia,Negatyw,Nasycenie barw", wykonaj_dzialanie);
} else {
stworz_Pomoc("O mnie, O programie, Najczęściej zadawane pytania", wykonaj_pomoc);
}

}
}

public void stworz_Plik(String lista_Plik, ActionListener e) {

tab1 = lista_Plik.split(",");

for (int i = 0; i < tab1.length; i++) {

wybor = new JMenuItem(tab1[i]);
pdp[0].add(wybor);
wybor.addActionListener(e);

}
}

public void stworz_Dzialanie(String lista_Dodaj, ActionListener e) {

tab2 = lista_Dodaj.split(",");

for (int i = 0; i < tab2.length; i++) {

wybor = new JMenuItem(tab2[i]);
pdp[1].add(wybor);
wybor.addActionListener(e);

}
}

public void stworz_Pomoc(String lista_Pomoc, ActionListener e) {

tab3 = lista_Pomoc.split(",");

for (int i = 0; i < tab3.length; i++) {

wybor = new JMenuItem(tab3[i]);
pdp[2].add(wybor);
wybor.addActionListener(e);

}
}

// public class klasa_zadan implements ActionListener, WindowListener, ComponentListener, MouseListener {
public class klasa_zadan implements ActionListener {

BufferedImage obraz;

public void actionPerformed(ActionEvent e) {
String polecenie = e.getActionCommand();

if (polecenie.equals("Otwórz")) {
try {
otworz();
} catch (IOException ex) {
Logger.getLogger(uklad_gl.class.getName()).log(Level.SEVERE, null, ex);
}
}


}

public void otworz() throws IOException {
otworz = new JFileChooser("C:/");
FileNameExtensionFilter rastrowa = new FileNameExtensionFilter("Pliki grafiki rastrowej(.jpeg,.png.,gif...)", "jpeg", "jpg", "gif", "png", "bmp");

otworz.setFileFilter(rastrowa);

int a = otworz.showOpenDialog(null);

if (a == JFileChooser.APPROVE_OPTION) {
String nazwa_pliku = otworz.getSelectedFile().getAbsolutePath();
String roz = nazwa_pliku.substring(nazwa_pliku.lastIndexOf('.') + 1);

obraz = ImageIO.read(otworz.getSelectedFile());
rozklad = new JPanel() {
@Override
protected void paintComponent(Graphics g) {
Graphics g2 = g.create();
g2.drawImage(obraz, 0, 0, getWidth(), getHeight(), null);
g2.dispose();
}
};
add(rozklad);
revalidate();
repaint();
}
}
}
}

klasa_zadan

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.imageio.ImageIO;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.filechooser.FileNameExtensionFilter;

//public class klasa_zadan extends JFrame implements ActionListener, WindowListener, ComponentListener, MouseListener {
public class klasa_zadan extends JFrame implements ActionListener {

BufferedImage obraz;
JFileChooser otworz, zapisz_jako;

public void actionPerformed(ActionEvent e) {
try {
String polecenie = e.getActionCommand();

if (polecenie.equals("Otwórz")) {
otworz();
}

if (polecenie.equals("Zapisz jako...")) {
zapisz_jako();
}

if (polecenie.equals("Zamknij")) {
zamknij();
}
} catch (IOException ex) {
Logger.getLogger(klasa_zadan.class.getName()).log(Level.SEVERE, null, ex);
}
}

public void otworz() throws IOException {
otworz = new JFileChooser("C://");

FileNameExtensionFilter rastrowa = new FileNameExtensionFilter("Pliki grafiki rastrowej(.jpeg,.png.,gif...)", "jpeg", "jpg", "gif", "png", "bmp");
otworz.setFileFilter(rastrowa);
int a = otworz.showOpenDialog(null);

if (a == JFileChooser.APPROVE_OPTION) {
String nazwa_pliku = otworz.getSelectedFile().getAbsolutePath();
// String roz=nazwa_pliku.substring(nazwa_pliku.lastIndexOf('.')+1);

/*final BufferedImage*/ obraz = ImageIO.read(otworz.getSelectedFile());
final JPanel rozklad = new JPanel(new BorderLayout()) {
@Override
protected void paintComponent(Graphics g) {
Graphics g2 = (Graphics2D) g;
g2.drawImage(obraz, 0, 0, this);
//g2.dispose();
}
};
Dimension rozmiar = new Dimension(obraz.getWidth(), obraz.getHeight());
add(rozklad);
revalidate();
repaint();
}
}

public void zapisz() throws IOException {
File plik = zapisz_jako.getSelectedFile();
String nazwa_pliku = plik.getAbsolutePath();
String roz = nazwa_pliku.substring(nazwa_pliku.lastIndexOf(".") + 1);
ImageIO.write(obraz, roz, plik); //niewiadomo, czy ta metoda działa!!!!
}

public void zapisz_jako() { //zapisanie pliku do innego formatu jest uzależnione od rodzaju pliku graficznego
zapisz_jako = new JFileChooser("C://");
zapisz_jako.setSelectedFile(new File("beznazwy.jpg")); //tworzy plik, który będzie zapisany z domyślną nazwą
zapisz_jako.setFileSelectionMode(JFileChooser.FILES_ONLY);

FileNameExtensionFilter rastrowa = new FileNameExtensionFilter("Pliki grafiki rastrowej(.jpeg,.png.,gif...)", "jpeg", "jpg", "gif", "png", "bmp");
zapisz_jako.setFileFilter(rastrowa);

int a = zapisz_jako.showSaveDialog(null);

if (a == JFileChooser.APPROVE_OPTION) {
File plik = zapisz_jako.getSelectedFile();
String nazwa_pliku = plik.getAbsolutePath();
String roz;

if (nazwa_pliku.indexOf(".jpg") == -1 && nazwa_pliku.indexOf(".png") == -1 && nazwa_pliku.indexOf(".gif") == -1) {
nazwa_pliku += ".jpg"; //zostaw jpg jako domyślny
// roz = "jpg";
// plik = new File(nazwa_pliku);
} else {
roz = nazwa_pliku.substring(nazwa_pliku.lastIndexOf(".") + 1);
try {
ImageIO.write(obraz, roz, plik);
} catch (IOException ex) {
Logger.getLogger(klasa_zadan.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
}

public void zamknij() {
int tn = JOptionPane.showConfirmDialog(null,
"Czy na pewno chcesz zakończyć działanie z programem?", "Widaomość",
JOptionPane.YES_NO_OPTION, 0, null);

if (tn == 0) {
System.exit(0);
}
}
}

关于java - 打开的图像不出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14158528/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com