So gibt mindestens drei grundlegende Probleme sind ...
One ...
Sie nur eine haben Komponente, also, wenn Sie so etwas tun ...
JLabel num = new JLabel();
for (int i = 0; i < a.length; i++)
{
num.setText((String.valueOf(a[i]));
num.setLocation(20*i, 20);
contentPane.add(num);
}
Alles, was Sie tun, ist die Einstellung der Eigenschaften einer bereits vorhandenen Komponente und versucht, sie zu einem Container hinzuzufügen, in dem sie sich bereits befindet, so dass es immer nur eine Komponente gibt.
Zwei
Sie setzen nie die Größe des JLabel
, und da Sie ein null
Layout verwenden entschieden haben, werden Sie diese
Drei nennen
verantwortlich dafür Sie setVisible
auf die Frame, bevor die Benutzeroberfläche fertig ist, wurde eingerichtet. Während Sie dies tun können, ist es einfacher, die Benutzeroberfläche vor dem Anzeigen des Frames einzurichten, da dadurch andere Probleme reduziert werden. Wenn Sie Komponenten mit dem Rahmen in einer dynamischen Art und Weise hinzufügen möchten, müssen Sie revalidate
und repaint
auf dem Behälter rufen Sie sie
Beispiel hinzugefügt haben ...
Nun nehmen, dass alle in Betracht Sie etwas eher wie dieses ...
import java.awt.Color;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.border.EmptyBorder;
public class Test {
public static void main(String[] args) {
new Test();
}
public Test() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
ex.printStackTrace();
}
JFrame frame = new JFrame("Testing");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel contentPane = new JPanel();
contentPane.setBackground(Color.WHITE);
frame.setContentPane(contentPane);
int a[] = new int[5];
a[0] = 10;
a[1] = 20;
a[2] = 70;
a[3] = 40;
a[4] = 50;
for (int i = 0; i < a.length; i++) {
JLabel num = new JLabel((String.valueOf(a[i])));
num.setBorder(new EmptyBorder(0, 20, 0, 0));
contentPane.add(num);
}
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
}
nb tun könnte: ich mag es nicht, auch nicht stillschweigend dulden ich, die Verwendung von null
Layouts für alle Zeiten Menschen „denken“ sie brauchen sie, sie tun nicht
Wenn Sie eine variable Anzahl von Komponenten aufgelistet, könnten Sie ein JList
praktische Verwendung finden, da es vertikale und horizontale Verpackung und Scrollen
Side Spitze unterstützt: Check out [Array Literale] (http: // cs-Grundlagen .com/tech-interview/java/java-array-literals.php) beim Erstellen von zur Kompilierungszeit bekannten Arrays. Es ist einfach schönere Syntax. – byxor
Rufen Sie 'setVisible' auf dem Rahmen auf, nachdem Sie alles hinzugefügt haben – MadProgrammer