按钮不添加到Jframe

时间:2018-01-18 17:40:34

标签: java jframe jbutton grid-layout

我无法使用此代码创建字段。

我想加载一个文件,该字段应该添加特定大小的数组。问题是按钮没有显示在框架中。 有没有人知道为什么他们不在gridLayout?我已经测试了一些选项,但它仍然没有用。

package Gui;

import java.awt.FileDialog;
import java.awt.FlowLayout;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.LayoutManager;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class Feld extends JFrame implements ActionListener {
    //Deklaration von Variablen 

    JMenuBar jMenuBar;
    JMenu datei, filter, hilfe;

    JMenuItem neu;
    JMenuItem oeffnen;
    JMenuItem speichern;
    JMenuItem beenden;
    int hoehe = 100;
    int breite = 100;
    JMenuItem invertieren;
    JMenuItem Graustufen;
    JMenuItem HorizontalSpiegeln;
    JMenuItem VertikalSpiegeln;

    JMenuItem ueberPixelart;


    private GridLayout gridLayout;

    //erstellen eines Fensters und einer Menüleiste

    public void felderstellen() {

        jMenuBar = new JMenuBar();

        //Zuordnen meiner Variablen zum Fenster

        datei = new JMenu("Datei");
        filter = new JMenu("Filter");
        hilfe = new JMenu("Hilfe");


        neu = new JMenuItem("neu");
        oeffnen = new JMenuItem("öffnen");
        beenden = new JMenuItem("beenden");
        speichern = new JMenuItem("Hilfe");

        invertieren = new JMenuItem("invertieren");
        Graustufen = new JMenuItem("Graustufen");
        HorizontalSpiegeln = new JMenuItem("Horizontal spiegeln");
        VertikalSpiegeln = new JMenuItem("Vertikal spiegeln");

        ueberPixelart = new JMenuItem("über Pixel Art");


        //Hinzufügen der Menüpunkte zu den Oberpunkten

        datei.add(oeffnen);
        datei.add(neu);
        datei.add(speichern);
        datei.add(beenden);

        filter.add(invertieren);
        filter.add(Graustufen);
        filter.add(HorizontalSpiegeln);
        filter.add(VertikalSpiegeln);

        hilfe.add(ueberPixelart);

        oeffnen.addActionListener(this);

        jMenuBar.add(datei);
        jMenuBar.add(filter);
        jMenuBar.add(hilfe);

        setJMenuBar(jMenuBar);
        setVisible(true);
        setSize(1000, 2000);

    }

    public void actionPerformed(ActionEvent e) {

        if (e.getSource() == oeffnen) {
            dateieinladen();
        }

        if (e.getSource() == beenden) {
            schließen();
        }

        if (e.getSource() == hilfe) {
            hilfe();
            return;
        }
    }

    private void schließen() {
    }

    private void hilfe() {
    }

    private void dateieinladen() {

        FileDialog fd = new FileDialog(this, "Choose a file", FileDialog.LOAD);
        fd.setDirectory("C:\\");
        fd.setFile("*.txt");
        fd.setVisible(true);
        String filename = fd.getDirectory() + fd.getFile();


        if (filename == null)
            System.out.println("You cancelled the choice");
        else
            System.out.println("You chose " + filename);


        BufferedReader reader = null;

        try {
            reader = new BufferedReader(new FileReader(filename));

            String line;
            reader.readLine();
            String hoeheBreite = reader.readLine();
            int länge = hoeheBreite.split(" ").length;
            String[] laenge = hoeheBreite.split(" ");

            this.hoehe = Integer.parseInt(laenge[0]);
            this.breite = Integer.parseInt(laenge[1]);

            System.out.println(hoehe);
            System.out.println(breite);


            erstelleFeld(hoehe, breite);


            while ((line = reader.readLine()) != null) {
                System.out.println(line);
            }

        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                reader.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    private void erstelleFeld(int hoehe, int breite) {
        setLayout(new GridLayout(hoehe, breite));

        JLabel[] aHoehe = new JLabel[hoehe];
        JLabel[] aBreite = new JLabel[breite];
        JButton[][] buttons = new javax.swing.JButton[hoehe][breite];

        System.out.print(hoehe);
        System.out.print(breite);
        for (int i = 0; i < hoehe; i++) {
            for (int j = 0; j < breite; j++) {
                if (i == 0) {
                    aBreite[j] = new JLabel("");
                    add(aBreite[j]);
                } else if (j == 0) {
                    aHoehe[i] = new JLabel("");
                    add(aHoehe[i]);
                }
                add(buttons[i][j]);
            }
        }
    }
}

1 个答案:

答案 0 :(得分:0)

据我所知,你永远不会像这样实例JButton

   for(int y = 0; y < hoehe; y++){
        for(int x = 0; x < breite; x++){
            buttons[y][x] = new JButton();
        }
    }

完成此操作后,您可以将JButton添加到JFrame

  

正如您对问题的评论中所提到的,翻译德语评论可能是个好主意,因为不是每个人都能理解你。