简体   繁体   English

无法在 Java 中设置为 TabbedPane 大小

[英]Can't set to TabbedPane size in Java

I'm trying to create a tabPane and add tabs from my database.我正在尝试创建一个tabPane并从我的数据库中添加选项卡。 But I have a problem while setting size and location of tabbedPane .但是我在设置tabbedPane大小和位置时tabbedPane Here is my code ;这是我的代码;

JPanel pnlTemp;
JTabbedPane tabPaneTemp;
JButton btnTemp;

int categoryCount= site.getCategoryCount();

try {

//sql. is a class which I created for connection to database. 

    ResultSet resultCategory= sql.select("SELECT * FROM CATEGORY");

    for (int i = 0; i < categoryCount; i++) {
        resultCategory.next();

        pnlTemp = new JPanel();
        tabPaneAnasayfa.addTab(resultCategory.getString("AD"), pnlTemp);

        tabPaneTemp = new JTabbedPane();
        pnlTemp.add(tabPaneTemp);

       tabPaneTemp.setSize(950, 460);
       tabPaneTemp.setBounds(35,22,950, 460);

       tabPaneTemp.setTabPlacement(JTabbedPane.BOTTOM);

       createButtonToTab(tabPaneTemp);


    }

} catch (SQLException ex) {
    Logger.getLogger(Anasayfa.class.getName()).log(Level.SEVERE, null, ex);
}



private void createButtonToTab(JTabbedPane tabPane) {
JPanel pnlTemp;
JButton btnTemp;

ResultSet resultHaber = sql.select("SELECT * FROM HABER");
ArrayList<Haber> haberList = new ArrayList();
try {
    while (resultHaber.next()) {
        int haberID;
        haberID = resultHaber.getInt("ID");
        haberList.add(site.getHaber(haberID));

    }
} catch (SQLException ex) {
    Logger.getLogger(Anasayfa.class
           .getName()).log(Level.SEVERE, null, ex);
}

int listIndexi = 0;
int haberSirasi = 1; 

int topHaberSayisi = haberList.size();
for (int i = 0; i < topHaberSayisi; i++) {

    pnlTemp = new JPanel();
    btnTemp = new JButton();

    btnTemp.setSize(pnlTemp.getSize());

    pnlTemp.setLayout(new GridLayout());

    if (!haberList.get(listIndexi).haberSonDakikaMi) {
        tabPane.addTab(String.valueOf(haberSirasi), pnlTemp);
        Haber tempHaber;
        tempHaber = haberList.get(listIndexi);

        pnlTemp.add(btnTemp);
        btnTemp.setText(haberList.get(listIndexi).haberBasligi);
        haberSirasi++;

        btnTemp.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent ae) {
                haberOkuCagir(tempHaber.haberID);
            }
        });
    }
    listIndexi++;

}
}

Here is the result:结果如下:

在此处输入图片说明

pnlTemp = new JPanel(); default layout of JPanel is FlowLayout . JPanel默认布局是FlowLayout So in FlowLayout you can not set positions by setBounds() .所以在FlowLayout你不能通过setBounds()设置位置。 You can learn how to use layout managers here .您可以在此处了解如何使用布局管理器。 Pick one of them to implement your desired design.选择其中之一来实现您想要的设计。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM