//編集:ここで混乱したくないので、私が編集した質問;)こんにちは。ここに私が問題を抱えている2つのクラスがあります。サブクラスを開いて画像を表示するクラスであるプログラムではうまく機能しますが、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);
}
}
}