2015-07-22 153 views
0

我正在嘗試使用JPanelJOptionPanel,以便我可以修改警報窗口的大小。我寫的代碼,因爲這:使用JPanel的JOptionPane

JPanel panel = new JPanel(); 
//panel.setBackground(Color.RED); 
panel.setPreferredSize(new Dimension(500,500)); 

// display the jpanel in a joptionpane dialog, using showMessageDialog 
JFrame frame = new JFrame("JOptionPane showMessageDialog component example"); 

while (AlarmRS.next()) { 
    System.out.println(AlarmRS.getString("Description")); 
    //JOptionPane.showInternalMessageDialog(null, getPanel(), AlarmRS.getString("Description"), JOptionPane.INFORMATION_MESSAGE); 
    JOptionPane.showMessageDialog(frame,panel, AlarmRS.getString("Description"), JOptionPane.WARNING_MESSAGE); 
} 

然而,當我運行該程序,描述意味着在中間,而是,它進入標題欄。我怎樣才能使這項工作,使描述是警報窗口的主要文字?

+0

請添加一個'JLabel'到'JPanel' ..... –

+1

的['爲的JavaDoc showMessageDialog'(http://docs.oracle.com/javase/7 /docs/api/javax/swing/JOptionPane.html#showMessageDialog(java.awt.Compone nt,%20java.lang.Object,%20java.lang.String,%20int))明確指出第三個參數是對話框的標題字符串(*)是對話框的標題字符串* – MadProgrammer

回答

3

JavaDocs for showMessageDialog明確規定,第三放慢參數是對話框

title「爲對話框的標題字符串」)相反,創建一個JLabel其文本設置爲你想顯示什麼,添加它,它的panel

JPanel panel = new JPanel(new GridBagLayout()); 
//panel.setBackground(Color.RED); 
panel.setPreferredSize(new Dimension(500, 500)); 

while (AlarmRS.next()) { 
    System.out.println(AlarmRS.getString("Description")); 
    panel.add(new JLabel(AlarmRS.getString("Description"))); 
    //JOptionPane.showInternalMessageDialog(null, getPanel(), AlarmRS.getString("Description"), JOptionPane.INFORMATION_MESSAGE); 
    JOptionPane.showMessageDialog(frame, panel, "This is a title", JOptionPane.WARNING_MESSAGE); 
}