0
Java가 새로 생겨서 GridBagLayout으로 첫 번째 GUI를 생성하려고합니다. 아래의 코드에서 전체 화면을 가져 오지만 "label_url_eingabe"및 "url_eingabe"구성 요소는 표시되지 않습니다 (빈 창). 창을 최소화하면 표시됩니다! 창 크기를 특정 값으로 설정하면 동일한 동작이 발생합니다. 따라서 구성 요소는 프로그램 시작 초기에 표시되지 않습니다.Java GridBagLayout 구성 요소가 전체 화면에 표시되지 않습니다.
package ofb_reader_package;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
public class OFB_Reader_GUI extends JFrame {
// Definition der GUI Komponenten
// Eingabefeld URL
JLabel label_url_eingabe;
JTextField url_eingabe;
//this.OFB_Reader_GUI();
// Eigenschaften Hauptfenster "OFB_Reader_GUI"
public OFB_Reader_GUI() {
// Eigenschaften Hauptfenster
setVisible(true);
setSize(500, 300);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setTitle("Mark's OFB Reader");
setResizable(true);
setExtendedState(JFrame.MAXIMIZED_BOTH);
setLayout(null);
this.label_url_eingabe = new JLabel("URL:");
this.url_eingabe = new JTextField(10);
this.getContentPane().setLayout(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
// POSITIONIERUNGEN MIT GRIDBAGLAYOUT
// URL Eingabe Label und Einghabefeld
c.fill = GridBagConstraints.HORIZONTAL;
c.gridx = 0;
c.gridy = 0;
c.ipadx = 35;
c.weightx = 1.0;
c.weighty = 1.0;
c.anchor = GridBagConstraints.NORTHWEST;
this.getContentPane().add(this.label_url_eingabe, c);
c.fill = GridBagConstraints.HORIZONTAL;
c.gridx = 1;
c.gridy = 0;
c.ipadx = 35;
c.weightx = 1.0;
c.weighty = 1.0;
c.anchor = GridBagConstraints.NORTHWEST;
add(this.url_eingabe, c);
}
}
이 메인입니다 :
package ofb_reader_package;
import javax.swing.*;
public class OFB_Reader_main_class {
public static void main(String[] args){
new OFB_Reader_GUI();
new OFB_Reader_main_class();
}
}
JFrame의는, setVisible은 ** 마지막 ** 메소드 호출이 아닌 처음이다. JFrame 메서드를 호출하는 순서는 ** 가장 중요합니다 **. JFrame을 압축하여 표시하기 전에 Swing 구성 요소를 만들어 JPanel 또는 JFrame에 추가해야합니다. 마지막으로 null 레이아웃을 사용하지 마십시오. GUI를 만들려면 [스윙 레이아웃] (https://docs.oracle.com/javase/tutorial/uiswing/layout/visual.html)을 사용하십시오. –