0
我正在爲layout manager使用gridbaglayout編寫快速的weatherapplication。然而,gridbag拒絕將JLabel對象放入單獨定義的單元格中,而是將其全部放入一個單元格中。GridBagLayout將所有對象放在同一個單元格中
public class WeatherApp extends JFrame {
private JLabel jDayOfTheWeek;
RSSReader rss = null;
private JLabel jWindDirectionToday;
private JLabel jWindSpeed1;
private JLabel jMaxTemp1;
private JLabel jMinTemp1;
private JLabel jVisibility1;
private JLabel jPressure1;
private JLabel jHumidity1;
private JLabel jWindSpeed2;
private JLabel jMaxTemp2;
private JLabel jMinTemp2;
private JLabel jVisibility2;
private JLabel jPressure2;
private JLabel jHumidity2;
private JLabel jWindSpeed3;
private JLabel jMaxTemp3;
private JLabel jMinTemp3;
private JLabel jVisibility3;
private JLabel jPressure3;
private JLabel jHumidity3;
public WeatherApp() {
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setTitle("Detailed weather");
this.setSize(320,480);
GridBagLayout myLayout = new GridBagLayout();
JPanel mainFrame = new JPanel(myLayout);
rss = new RSSReader();
GridBagConstraints c = new GridBagConstraints();
c.gridwidth = 4;
c.gridheight = 10;
jDayOfTheWeek = new JLabel("lelel");
jDayOfTheWeek.setText(this.getDayOfTheWeek());
c.anchor = GridBagConstraints.FIRST_LINE_START;
c.gridx = 0;
c.gridy = 0;
c.weightx = 1;
c.weighty = 1;
mainFrame.add(jDayOfTheWeek, c);
jWindDirectionToday = new JLabel(rss.getFirstDay().getWindDirection());
c.anchor = GridBagConstraints.CENTER;
c.gridx = 2;
c.gridy = 2;
c.weightx = 1;
c.weighty = 1;
mainFrame.add(jWindDirectionToday, c);
jWindSpeed1 = new JLabel(Integer.toString(rss.getFirstDay().getWindSpeed()) + "mph");
c.gridx = 3;
c.gridy = 3;
c.weightx = 1;
c.weighty = 1;
mainFrame.add(jWindSpeed1, c);
jMaxTemp1 = new JLabel(Integer.toString(rss.getFirstDay().getMaxTemp()) + "C");
c.gridx = 4;
c.gridy = 4;
c.weightx = 1;
c.weighty = 1;
mainFrame.add(jMaxTemp1, c);
this.add(mainFrame);
}
public String getDayOfTheWeek() {
Calendar c = Calendar.getInstance(TimeZone.getDefault());
Date currentDate = c.getTime();
return new SimpleDateFormat("EEEE").format(currentDate);
}
public static void main(String[] args) {
WeatherApp myapp = new WeatherApp();
myapp.setVisible(true);
}
現在,如果你看一下代碼,中的JLabel被分配到不同的網格位置:0,0 2,2 3,3和4,4然而,結果當我編譯和執行所有網格位置忽略,但是如果我使用gridbagconstraints的常量來錨定這些常量時,請遵循這些常量。
你必須爲1(GBC是基於列)把無形的(幾個空的JLabel),以1行2的JLabel在第1行將佔用所需的列數 – mKorbel