Output GUI funktioniert nur beim ersten Mal richtig.

BUT_95

Neues Mitglied
Hallo.
Ich habe 2 Benutzeroberflächen, eine für den Input und eine für den Output.
Allerdings besteht das Problem, dass wenn ich die Input GUI öffne und die Parameter eingebe nur beim ersten Mal die Output GUI ok ist (Schachbrett mit Größe nxn)
Wenn ich dann beim Input nochmals den Startbutton drücke, bekomme ich beim Output ein Schachbrett der Größe nx(2n), wobei die Befüllung dann auch komisch ist. Ich erstelle aber eigentlich jedes mal eine neue Output GUI und schließe die alte automatisch. Evtl hab ich wo einen Denkfehler oder jemand eine Idee?

Input:
public class Input_GUI implements ActionListener
{
//Parameter for main
private static JFrame frame;
private static JButton start;
private static JLabel hint;
private static JTextField input;
private static ImageIcon img;
private static JLabel outputChesssize;
private static JLabel outputSolvedModels;
private static JLabel outputTime;
private static JLabel outputSolution;
private static int closeOldWindow;

// Mainclass
public static void main(String[] args)
{
EventQueue.invokeLater(new Runnable() {
@SuppressWarnings("static-access") //invalidate the warning
public void run() {
try {
Input_GUI window = new Input_GUI();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}

//Create Application for Input
public Input_GUI()
{
frame = new JFrame();
frame.setTitle("Chess Queenproblem - Parameter");
frame.setBounds(100, 100, 430, 350);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);

input = new JTextField("");
input.setBounds(261, 13, 39, 26);
input.setHorizontalAlignment(JTextField.CENTER);
input.setColumns(10);
frame.getContentPane().add(input);

start = new JButton("Optimize");
start.setBounds(298, 12, 112, 28);
start.setFont(start.getFont().deriveFont(12f));
frame.getContentPane().add(start);

hint= new JLabel("Enter the size of the chess field (Integer>0):");
hint.setBounds(10, 13, 400, 26);
hint.setFont(hint.getFont().deriveFont(12f));
frame.getContentPane().add(hint);

JLabel chessImage= new JLabel();
chessImage.setBounds(70, 60, w, h);
chessImage.setHorizontalAlignment(JLabel.CENTER);
chessImage.setFont(chessImage.getFont().deriveFont(12f));
chessImage.setIcon(img);
frame.getContentPane().add(chessImage);

closeOldWindow = 0;
start.addActionListener(this);
}

// Eventhandler for Application
public void actionPerformed(ActionEvent e)
{
if(e.getSource() == start)
{
if(closeOldWindow>0) {Output_GUI.closeOutputGUI();}
String str = input.getText();

boolean isNumeric = true;
for (int i = 0; i < str.length(); i++)
{
if (!Character.isDigit(str.charAt(i)))
{isNumeric = false;}
}

if(isNumeric == true)
{
int n = Integer.valueOf(str);
if(n>0)
{
try {Chess_queenproblem.startViaGUI(n);}
catch (GRBException e1) {e1.printStackTrace();}
hint.setForeground(Color.black);
}
else {hint.setForeground(Color.red);}
}
else {hint.setForeground(Color.red);}
}
closeOldWindow++;
}
}


Output:

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.Image;
import javax.swing.*;

/**
* Object: Operation Research
* Project: Chess
* Programmer: Buchegger T, Pachteu S, Roth U,
* Copyright 2022 Buchegger-Pachteu-Roth
*/

public class Output_GUI {

// Parameter for main
public static JFrame frame;
private static JPanel panel1 = new JPanel();
private static JPanel panel2 = new JPanel();
private static JPanel panel3 = new JPanel();
private static JPanel panel4 = new JPanel();
private static JPanel panel5 = new JPanel();
private static int n;
private static boolean[][] b;
private static JButton[][] buttons;
private static Dimension d;
private static GridLayout layout;
private static int i;
private static int j;
private static ImageIcon imgW;
private static ImageIcon imgB;

//Mainclass
public static void main(String[] args, int nn, boolean[][] bb)
{
n = nn;
b = bb;

@SuppressWarnings("unused") //invalidate the warning
Output_GUI s1 = new Output_GUI(n, b);
}

//Create Application for Output
public Output_GUI(int n, boolean[][] b)
{
buttons = new JButton[n][n];
d = new Dimension(50, 50);
layout = new GridLayout(n,n);
i = 0;
j = 0;

frame = new JFrame("Chess Queenproblem - Drawing");
frame.setSize(500, 500);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new BorderLayout());

panel1.setLayout(layout);
panel2.setPreferredSize(d);
panel3.setPreferredSize(d);
panel4.setPreferredSize(d);
panel5.setPreferredSize(d);

imgW = new ImageIcon("C:images/chess_W.png");
imgB = new ImageIcon("C:images/chess_B.png");

// Create Fields
for (i=0; i<n; i++)
{
for (j=0; j<n; j++)
{
buttons[j] = new JButton("");
buttons[j].setActionCommand("" + i);
buttons[j].setActionCommand("" + j);

if ((j % 2 == 0 || !(i % 2 == 0)) && ((i % 2 == 0 || !(j % 2 == 0))))
{
if(b[j] == true)
{
buttons[j].setBackground(Color.white);
int s = 300/n;
imgW.setImage(imgW.getImage().getScaledInstance(s,s,Image.SCALE_SMOOTH));
buttons[j].setIcon(imgW);
}
else {buttons[j].setBackground(Color.white);}
}
else
{
if(b[j] == true)
{
buttons[j].setBackground(Color.black);
int s = 300/n;
imgB.setImage(imgB.getImage().getScaledInstance(s,s,Image.SCALE_SMOOTH));
buttons[j].setIcon(imgB);
}
else {buttons[j].setBackground(Color.black);}
}
panel1.add(buttons[j], BorderLayout.CENTER);
}

frame.add(panel1, BorderLayout.CENTER);
frame.add(panel2, BorderLayout.WEST);
frame.add(panel3, BorderLayout.EAST);
frame.add(panel4, BorderLayout.SOUTH);
frame.add(panel5, BorderLayout.NORTH);
frame.setVisible(true);
panel2.setLayout(new BoxLayout(panel2,BoxLayout.X_AXIS));
panel3.setLayout(new BorderLayout());
panel4.setLayout(new BorderLayout());
panel5.setLayout(new BorderLayout());
}
}

//Close old window
public static void closeOutputGUI()
{
frame.dispose();
}
}


 

Anhänge

  • nok.PNG
    nok.PNG
    42,2 KB · Aufrufe: 0
  • ok.PNG
    ok.PNG
    36 KB · Aufrufe: 1

BUT_95

Neues Mitglied
Also die Methode ruft quasi nur mit dem in der Input_GUI angegebenen Parameter n die Hauptmethode der Hauptklasse auf.
"Chess_queenproblem.main(null)". Diese liefert mit dann mit einer anderen Methode als Ergebnis einfach ein boolean[][]. Das n wird nie verändert.

Ich weiß nicht, ob nicht irgendwie das alte Fenster nicht "richtig" geschlossen wird. Irgendwie scheinen im Hintergrund immer noch die alten Einträge bestehen zu bleiben.

public static void startViaGUI (int i) throws GRBException
{
n = i;
Chess_queenproblem.main(null);
}
 

KonradN

Super-Moderator
Mitarbeiter
Ist doch auch klar. Du hast ja nur einmal die Panel erzeugt und so. Und beim ersten Aufruf werden da Elemente hinzugefügt. Dann schließt Du das Fenster aber wenn Du es neu öffnest, dann verwendest Du wieder die Panel und fügst erneut Elemente hinzu. Damit hast Du die Elemente doppelt.

Also wie @mihe7 schon sagte:
(Und bitte macht dieses ganze static-Zeug raus, braucht kein Mensch)

Dieses static Müll ist einfach nur extrem fehleranfällig und führt in der Regel zu unleserlichem und unwartbaren Code (Wie du jetzt auch festgestellt haben dürftest!)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
F Output Stream / File Dateien / Speichern AWT, Swing, JavaFX & SWT 13
S XML Output String Format AWT, Swing, JavaFX & SWT 2
N Input/Output Stream werte in Label anzeigen. AWT, Swing, JavaFX & SWT 6
L Graphics.drawImage() - Output-Größe entspricht nicht Parametern AWT, Swing, JavaFX & SWT 10
A JProgressBar updaten abhängig vom Output eines externen Skripts AWT, Swing, JavaFX & SWT 2
S Eingeschränkte Ausgabe auf 2. Bildschirm? (Laptop VGA Output AWT, Swing, JavaFX & SWT 4
R Output in TextArea AWT, Swing, JavaFX & SWT 10
Juelin if Abfrage funktioniert nicht richtig AWT, Swing, JavaFX & SWT 10
C Button ActionListener funktioniert nicht AWT, Swing, JavaFX & SWT 1
P AWT Programm funktioniert nicht richtig AWT, Swing, JavaFX & SWT 35
MartinNeuerlich Kann mir jemand, der einen Mac mit einem m1 oder m2-Chip hat, eine POM geben mit der Javafx-Fullscreen beim Mac mit m-Chip funktioniert? AWT, Swing, JavaFX & SWT 1
R auto. Importanweisungen für javafx funktioniert in Eclipse nicht mehr AWT, Swing, JavaFX & SWT 4
M Scrollbar funktioniert nicht AWT, Swing, JavaFX & SWT 10
D Repaint Funktioniert nicht AWT, Swing, JavaFX & SWT 2
W JEditorPane textausrichtung nach settext funktioniert nicht mehr AWT, Swing, JavaFX & SWT 11
H Swing Anpassen der Textgröße im JLabel funktioniert nur bedingt AWT, Swing, JavaFX & SWT 7
sserio JFrame setIconImmage() funktioniert nicht AWT, Swing, JavaFX & SWT 3
T Swing Tooltip-Delay funktioniert nicht immer. AWT, Swing, JavaFX & SWT 1
sserio Wie funktioniert ein Controller bei JavaFx? AWT, Swing, JavaFX & SWT 1
U Wie funktioniert das rotieren unter 2dGraphics, also wie stelle ich z. B. 90° ein? AWT, Swing, JavaFX & SWT 1
U Wie funktioniert Polygon? AWT, Swing, JavaFX & SWT 1
U Wie genau funktioniert 2dgraphics, in diesem Bezug? AWT, Swing, JavaFX & SWT 4
S ChoiceBox aus ArrayList per setValue() mit Wert belegen funktioniert nicht. AWT, Swing, JavaFX & SWT 0
H KeyListener funktioniert nicht AWT, Swing, JavaFX & SWT 1
H BufferedImage zurücksetzen funktioniert nicht AWT, Swing, JavaFX & SWT 12
H RPG Programmieren, label.setLocation funktioniert nicht AWT, Swing, JavaFX & SWT 7
EinNickname9 Einfacher parser funktioniert nicht AWT, Swing, JavaFX & SWT 2
F Swing Adapt Row Height funktioniert nicht richtig :( AWT, Swing, JavaFX & SWT 7
P Swing jxmapviewer hinzufügen/nutzen funktioniert nicht AWT, Swing, JavaFX & SWT 7
CptK Wie funktioniert contains() für Path2D.Double AWT, Swing, JavaFX & SWT 10
J Anbindung Textfeldklasse an Table funktioniert nicht AWT, Swing, JavaFX & SWT 3
R Actionlistener funktioniert nicht AWT, Swing, JavaFX & SWT 4
B Stylen eines JTextPane funktioniert nicht AWT, Swing, JavaFX & SWT 1
VPChief Swing Eclipse: Nach Exportieren, Button funktioniert nicht mehr AWT, Swing, JavaFX & SWT 26
H Bewegung funktioniert nicht AWT, Swing, JavaFX & SWT 3
N Pixelfarbe abgleichen funktioniert nicht AWT, Swing, JavaFX & SWT 5
A Swing JTextField an Button übergeben für Popup-Fenster funktioniert nicht AWT, Swing, JavaFX & SWT 3
N eclipse Java, bilder benutzten Funktioniert nicht AWT, Swing, JavaFX & SWT 6
Zrebna JavaFX-Projekt mit Bildern funktioniert nicht - um Hilfe wird gebeten AWT, Swing, JavaFX & SWT 14
steven789hjk543 Swing Weiß jemand, warum dieses Programm nicht funktioniert? AWT, Swing, JavaFX & SWT 7
M Swing setMaximumSize funktioniert nicht AWT, Swing, JavaFX & SWT 1
K JavaFX funktioniert nicht AWT, Swing, JavaFX & SWT 2
B AWT actionPerformed Method funktioniert nicht AWT, Swing, JavaFX & SWT 12
L JavaFX Drag and Drop funktioniert nicht AWT, Swing, JavaFX & SWT 3
M Swing Code funktioniert auf Windows aber nicht Linux... AWT, Swing, JavaFX & SWT 3
T LookAndFeel LookAndFeel funktioniert nicht beim JFrame wechsel AWT, Swing, JavaFX & SWT 3
J JavaFX addListener funktioniert nicht AWT, Swing, JavaFX & SWT 1
P CardLayout funktioniert fehlerhaft AWT, Swing, JavaFX & SWT 13
L WrapLayout funktioniert nicht AWT, Swing, JavaFX & SWT 1
kodela Accalerator für einige Menüoptionen funktioniert nicht mehr AWT, Swing, JavaFX & SWT 3
S JavaFX mit javac compilieren funktioniert nicht AWT, Swing, JavaFX & SWT 2
K Swing Entfernen von Panel funktioniert nicht AWT, Swing, JavaFX & SWT 5
J AWT System Farben / java.awt.SystemColor funktioniert nicht AWT, Swing, JavaFX & SWT 4
G Swing Swing Binding JList funktioniert nicht AWT, Swing, JavaFX & SWT 5
it_is_all ActionListener umlenken/ updaten mit AddActionListener funktioniert nicht AWT, Swing, JavaFX & SWT 3
K javafx app > "run in browser" funktioniert nicht AWT, Swing, JavaFX & SWT 3
N JavaFX GridPane Halignment funktioniert nicht AWT, Swing, JavaFX & SWT 1
it_is_all JLabel.setIcon - funktioniert nicht mehr AWT, Swing, JavaFX & SWT 2
R Ausgabe über JOptionPane.showMessageDialog funktioniert nicht AWT, Swing, JavaFX & SWT 2
L 2D-Grafik Frage zu Ellipse2D.Double, Abfrage, ob Punkt enthalten ist funktioniert nicht AWT, Swing, JavaFX & SWT 3
J JTable Selection Listener funktioniert nicht AWT, Swing, JavaFX & SWT 4
F "ActionListener" funktioniert nicht AWT, Swing, JavaFX & SWT 4
Z BoxLayout funktioniert nicht und Buttongröße AWT, Swing, JavaFX & SWT 18
C Java Hintergrund funktioniert nicht AWT, Swing, JavaFX & SWT 9
J Swing Wie funktioniert dieser ChangePropertyListener??? AWT, Swing, JavaFX & SWT 0
GreenTeaYT Button funktioniert nicht für Ein-und Auszahlungen? AWT, Swing, JavaFX & SWT 8
C Keylistener funktioniert nicht AWT, Swing, JavaFX & SWT 1
A Swing Programm funktioniert aber zwei Buttons werden angezeigt AWT, Swing, JavaFX & SWT 3
M UIManager funktioniert nicht mit Farben AWT, Swing, JavaFX & SWT 9
M Swing UIManager funktioniert nicht mit Farben AWT, Swing, JavaFX & SWT 0
T KeyListener funktioniert nicht wenn ich ein JButton hinzufüge AWT, Swing, JavaFX & SWT 1
S JavaFX wie funktioniert CSS und javaFX AWT, Swing, JavaFX & SWT 19
S KeyListener funktioniert nicht AWT, Swing, JavaFX & SWT 2
J JScrollPane funktioniert nicht AWT, Swing, JavaFX & SWT 5
M JavaFX Eventhandler Funktioniert nicht AWT, Swing, JavaFX & SWT 3
Sogomn JavaFX Injektion funktioniert nicht AWT, Swing, JavaFX & SWT 4
Blender3D Swing KeyBoardListener funktioniert nicht unter UBUNTU AWT, Swing, JavaFX & SWT 7
J JavaFX Button funktioniert(nicht) AWT, Swing, JavaFX & SWT 3
J DefaultCloseOperation funktioniert nicht AWT, Swing, JavaFX & SWT 9
F JavaFX ObservableList -- warum funktioniert das so.... AWT, Swing, JavaFX & SWT 3
R Swing Bewegung eines Graphics Objektes innerhalb eines JPanels funktioniert nicht richtig AWT, Swing, JavaFX & SWT 2
Paul15 Button funktioniert nur einmal AWT, Swing, JavaFX & SWT 9
D Swing Warum erhalte ich keine Ausgabe? Funktioniert der equals-vergleich in actionPeformed nicht richtig? AWT, Swing, JavaFX & SWT 3
H UpdatePolicy wird nicht richtig gesetzt / funktioniert nicht AWT, Swing, JavaFX & SWT 5
W Paint-Methode in anderer Klasse funktioniert nicht AWT, Swing, JavaFX & SWT 7
N KeyListener funktioniert nicht richitg AWT, Swing, JavaFX & SWT 4
L Event Handling wie funktioniert .getComponent? AWT, Swing, JavaFX & SWT 1
B JavaFX Scene Builder: resize funktioniert (meist) nicht AWT, Swing, JavaFX & SWT 6
J Swing Basics - JButton funktioniert nicht. AWT, Swing, JavaFX & SWT 1
D Passwort [Aber mit 3 Versuchen] Funktioniert nicht wie erwartet AWT, Swing, JavaFX & SWT 4
C Applet Applet funktioniert in Eclipse aber nicht in Browser AWT, Swing, JavaFX & SWT 1
J Zellen in JavaFx einfärben funktioniert nicht AWT, Swing, JavaFX & SWT 1
S Swing Warum funktioniert der automatische Zeilenumbruch mit arabischen Zeichen beim JTextPane nicht AWT, Swing, JavaFX & SWT 3
Joew0815 JDialog repaint() funktioniert nicht wie gewünscht. AWT, Swing, JavaFX & SWT 2
C KeyPressed funktioniert auf iOS nicht richtig? AWT, Swing, JavaFX & SWT 4
D Event Handling MouseListener funktioniert seit Java 8 nicht mehr AWT, Swing, JavaFX & SWT 13
M LayoutManager GridLayout funktioniert nicht AWT, Swing, JavaFX & SWT 0
I Objekte aus contentPane löschen funktioniert nicht AWT, Swing, JavaFX & SWT 3
F JavaFX Antialiasing funktioniert nicht? AWT, Swing, JavaFX & SWT 8
F CardLayout.show() funktioniert teilweise nicht AWT, Swing, JavaFX & SWT 5

Ähnliche Java Themen

Neue Themen


Oben