[英]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.