//编辑:我编辑的问题,因为我不想在这里搞砸;)你好。这是我遇到问题的 2 节课。在程序中,子类打开和显示图像的类运行良好,但是当我将一些代码分配给两个类时它不起作用(在 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();
}
}
}
}
** * ** * ***新课程* ** * ** * *
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);
}
}
}