[英]How to make JPanel sizes relative to JFrame size
我對Java(和編程)很陌生。 試圖弄清楚如何使Jpanel尺寸相對於JFrame尺寸。 我只是想創建一個日歷,所以我有三個不同的面板:一個用於月標題;另一個用於月標題。 一個星期幾; 另一個用於日歷正文。
這是我的代碼:
public DisplayACalendar() {
setLayout(new GridLayout(3, 1));
// create JPanel for month/year
JPanel monthTitle = new JPanel();
monthTitle.add(new JLabel(month + " " + year));
// create JPanel for Days of Week
String[] days = {"Sunday", "Monday", "Tuesday", "Wednesday",
"Thursday", "Friday", "Saturday"};
JPanel daysOfWeekPanel = new JPanel(new GridLayout(1, 7));
for (int i = 0; i < 7; i++) {
daysOfWeekPanel.add(new JLabel(days[i]));
}
// Create JPanel for calendar dates
JPanel calendarMonth = new JPanel(new GridLayout(6, 7));
for (int i = 1; i < firstDay; i++)
calendarMonth.add(new JLabel());
for (int i = 1; i <= daysInMonth; i++) {
JLabel jlblDayCell = new DayCell(i);
jlblDayCell.setHorizontalAlignment(JLabel.RIGHT);
calendarMonth.add(jlblDayCell);
}
int daysLeft = 42 - daysInMonth - firstDay;
for (int i = 0; i < daysLeft; i++)
calendarMonth.add(new JLabel());
add(monthTitle);
add(daysOfWeekPanel);
add(calendarMonth);
}
結果如下:
(來源: staticflickr.com )
我該如何解決? 例如,假設我要使車身面板占框架的80%,使另外兩個分別占框架的10%。
不用擔心百分比,而是根據它們的大小和文本的大小來創建適合的組件。 使用適當的布局管理器組合可以輕松地做到這一點。 例如,整體布局可以是BorderLayout,而壓光機放置在BorderLayout.CENTER上。 前兩個組件可以放在使用BoxLayout的JPanel中,也可以放在主JPanel BorderLayout.PAGE_START中。
如果您絕對需要使用百分比,那么您可能必須創建自己的布局管理器,這在您的階段可能會有些棘手,但是如果絕對需要的話,也並不是太困難。
同樣作為垃圾記錄,請考慮僅使用為此特定目的而構建的工具JCalendar 。
而不是使用GridLayout來使每個行/列的大小完全相同,而可以選擇GridBagLayout作為替代。 它有點笨重,但是您可以更好地控制組件的大小。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.