[英]GUI Disappearing when I add JComboBox
好吧,我對編程比較陌生,可能只是一些我想念的簡單但是其他線索與這個主題有關,海報沒有提供足夠的信息,相對於他們的問題,其他人提供高質量的答案,所以我會給它一槍。
public BenchUI(JFrame j){
jf = j;
init();
add(mainPanel);
topPanelButtons();
selectedCustomer();
rentalOptions();
clientListBox();
}
在這一點上,我可以指出,在我添加clientListBox()方法之前,一切都運行良好。 (下面)
public void clientListBox(){
clientList = new JComboBox(moo);
clientList.setPreferredSize(new Dimension(460,30));
gbc.gridx = 0;
gbc.gridy = 0;
leftSide.add(clientList,gbc);
}
我可以將它評論出來,讓我的整個GUI恢復正常但沒有JComboBox。
moo是String [] moo = {“Fish”,“Goat”,“Monkey”}; 一個虛擬字符串,僅用於測試目的並在開始時初始化。
所以當我放在clientList中時,為什么我的GUI完全消失了?
如果還有其他需要,我將會關注此主題並提供更多信息。
作為旁注,我不斷收到“原始類型”的警告,但它沒有指定工作,我可能因為沒有指定我的JComboBox而遇到麻煩嗎?
編輯:
好吧,我相信我已經復制了此代碼中的任何問題
import javax.swing.JFrame;
import javax.swing.*;
import java.awt.*;
public class main {
public static void main(String[] args){
JFrame jf = new JFrame();
jf.setExtendedState(JFrame.MAXIMIZED_BOTH);
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setResizable(false);
BenchUI bu = new BenchUI(jf);
jf.add(bu);
}
}
public class BenchUI extends JPanel{
JPanel one;
JFrame jf;
JComboBox<String> clientList;
String[] moo = {"Goat", "Fish", "Donkey"};
public BenchUI(JFrame j){
jf = j;
one = new JPanel(new GridBagLayout());
one.setBackground(Color.blue);
one.setPreferredSize(new Dimension(300,300));
clientList = new JComboBox<String>(moo);
one.add(clientList);
add(one);
}
}
隨着clientList的東西被注釋掉,我得到了我的愚蠢的小藍色面板,一旦它被添加,我失去了藍色面板,並且組合框也沒有顯示出來......在這一點投注這是一個facepalm問題>。
編輯:包括主類。
編輯:取出JComboBox構造函數和實現者的注釋標記
您發布的類似sscce(不是真正的SSCCE,因為我們無法運行它)代碼不會將任何諸如JComboBox添加到JPanel,並且不會向JFrame添加諸如當前JPanel之類的組件。
public class BenchUI extends JPanel{
JPanel one;
JFrame jf;
JComboBox<String> clientList;
String[] moo = {"Goat", "Fish", "Donkey"};
public BenchUI(JFrame j){
jf = j;
one = new JPanel(new GridBagLayout());
one.setBackground(Color.blue);
one.setPreferredSize(new Dimension(300,300));
//clientList = new JComboBox<String>(moo);
//one.add(clientList);
add(one);
}
}
所以沒有任何組件會顯示在任何JFrame上是有道理的。 您將需要閱讀有關如何將組件添加到其他組件(或容器)以及如何創建和顯示JFrame的Swing教程。 看看如何使用Swing組件 。
編輯
您的最新代碼實際上確實將BenchUI JPanel添加到JFrame,但是您仍然沒有向BenchUI JPanel添加任何組件,實際上您甚至不構造JComboBox而只創建JComboBox變量。 同樣,我強烈建議您閱讀我上面鏈接的Swing教程以及常規Java教程。
編輯2
一些一般建議:
pack()
之前將組件添加到頂級窗口 - 這會告訴所有布局管理器布置它們所持有的所有組件。 setVisible(true)
。 您的代碼存在的一個問題(除了不創建重要組件而不是將它們添加到GUI之外!)就是您在向GUI添加任何內容之前過早地在JFrame方式上調用setVisible(true)
。 編輯3
好的,現在您正在創建JComboBox,但是在將其設置為可見之后 ,您仍然會將所有組件添加到JFrame中。 請重新檢查上面子彈列表中的第3和第4個子彈。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.