ich einige Java-Code zu schreiben, dass der Benutzer einen Rahmen mit JLabel
, JTextField
und JButton
sehen können.Java Flow
Ich möchte die JLabel
namens "Count" und ich habe ein Problem mit FlowLayout
. Ich möchte die Schnittstelle wie folgt aussehen:
Stattdessen habe ich dies:
Dies ist mein Code:
package modul1_Interfate_Grafice;
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class Exercitiu04 implements ActionListener {
private JFrame frame;
private JLabel labelCount;
private JTextField tfCount;
private JButton buttonCount;
private int count = 0;
public void go() {
frame = new JFrame("Java Counter");
labelCount = new JLabel("Counter");
labelCount.setLayout(new FlowLayout());
frame.getContentPane().add(BorderLayout.CENTER, labelCount);
tfCount = new JTextField(count + " ", 10);
tfCount.setEditable(false);
labelCount.add(tfCount);
buttonCount = new JButton("Count");
labelCount.add(buttonCount);
buttonCount.addActionListener(this);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(350, 150);
frame.setLocation(400, 200);
}
@Override
public void actionPerformed(ActionEvent event) {
count++;
tfCount.setText(count + "");
}
public static void main(String[] args) {
Exercitiu04 a = new Exercitiu04();
a.go();
}
}
'frame.setSize (350, 150);' sollte stattdessen sein 'frame.pack();' .. –
'frame.setLocation (400, 200)' sollte sei 'frame.setLocationByPlatform (true)' wie von [dieser Frage und Antwort] angegeben (http://stackoverflow.com/questions/7143287/how-to-best-position-swing-guis). Es sollte auch vor 'frame.setVisible (true) 'stehen. – MasterBlaster
Sie sollten Swing-Methoden immer in den Event-Dispatch-Thread einfügen. Werfen Sie einen Blick auf [Parallelität in Swing - Die Java ™ Tutorials] (https://docs.oracle.com/javase/tutorial/uiswing/concurrency/index.html). – MasterBlaster