我无法使用此代码创建字段。
我想加载一个文件,该字段应该添加特定大小的数组。问题是按钮没有显示在框架中。
有没有人知道为什么他们不在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]);
}
}
}
}
答案 0 :(得分:0)
据我所知,你永远不会像这样实例JButton
:
for(int y = 0; y < hoehe; y++){
for(int x = 0; x < breite; x++){
buttons[y][x] = new JButton();
}
}
完成此操作后,您可以将JButton
添加到JFrame
正如您对问题的评论中所提到的,翻译德语评论可能是个好主意,因为不是每个人都能理解你。