[英]Second JFrame doesn't show from first JFrame
這是一個簡單的JFrame
應用程序。 它基本上是根據用戶選擇創建一個新的Frame
。 第一幀開始,但是新的幀不顯示! 它顯示ie2 cannot be resolved
ie1 cannot be resolved
& ie2 cannot be resolved
。 我想看一下新的Frame
。
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class Test2 {
public static void main(String[] args) {
JFrame jf = new JFrame("Java test");
Container c = jf.getContentPane();
jf.setBounds(450, 180, 450, 450);
jf.setVisible(true);
jf.setDefaultCloseOperation(jf.EXIT_ON_CLOSE);
JPanel jp = new JPanel();
c.add(jp);
JLabel jl = new JLabel("This is a text in a label",SwingConstants.CENTER);
jp.add(jl);
JComboBox jcb1 = new JComboBox();
jp.add(jcb1);
jcb1.addItemListener(new ItemListener() {
public void itemStateChanged(final ItemEvent ie1) {
ie1.getItem();
}
});
jcb1.addItem(" Select the Size ");
jcb1.addItem("100 x 100");
jcb1.addItem("200 x 200");
jcb1.addItem("300 x 300");
jcb1.addItem("400 x 400");
jcb1.addItem("500 x 500");
jcb1.addItem("600 x 600");
JComboBox jcb2 = new JComboBox();
jp.add(jcb2);
jcb2.addItemListener(new ItemListener() {
public void itemStateChanged(final ItemEvent ie2) {
ie2.getItem();
}
});
jcb2.addItem(" Select the Colour ");
jcb2.addItem("Blue");
jcb2.addItem("Red");
jcb2.addItem("Black");
jcb2.addItem("White");
jcb2.addItem("Yellow");
jcb2.addItem("Green");
JButton jb = new JButton("Create a new Frame");
jp.add(jb);
jb.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
final JFrame jf1 = new JFrame("New Frame");
Container c = jf1.getContentPane();
jf1.setVisible(true);
jf1.setDefaultCloseOperation(jf1.EXIT_ON_CLOSE);
// The Size of the frame
if (ie1.getItem().equals(" Select the Size ")) {
JOptionPane.showMessageDialog(null, "Please select the size of the Frame");
}
if (ie1.getItem().equals("100 x 100"))
;
{
jf1.setBounds(450, 180, 100, 100);
}
if (ie1.getItem().equals("200 x 200"))
;
{
jf1.setBounds(450, 180, 200, 200);
}
if (ie1.getItem().equals("300 x 300"))
;
{
jf1.setBounds(450, 180, 300, 300);
}
if (ie1.getItem().equals("400 x 400"))
;
{
jf1.setBounds(450, 180, 400, 400);
}
if (ie1.getItem().equals("500 x 500"))
;
{
jf1.setBounds(450, 180, 500, 500);
}
if (ie1.getItem().equals("600 x 600"))
;
{
jf1.setBounds(450, 180, 600, 600);
}
// The size of the Frame ends
// The colour of the frame
if (ie2.getItem().equals(" Select the Colour ")) {
JOptionPane.showMessageDialog(null, "Please select the colour of the Frame");
}
final JPanel jp1 = new JPanel();
c.add(jp1);
if (ie2.getItem().equals("Blue")) {
jp1.setBackground(Color.blue);
}
if (ie2.getItem().equals("Red")) {
jp1.setBackground(Color.red);
}
if (ie2.getItem().equals("Black")) {
jp1.setBackground(Color.black);
}
if (ie2.getItem().equals("White")) {
jp1.setBackground(Color.white);
}
if (ie2.getItem().equals("Yellow")) {
jp1.setBackground(Color.yellow);
}
if (ie2.getItem().equals("Green")) {
jp1.setBackground(Color.green);
}
// the colour of the frame ends
}
});
}
}
您既沒有實例化,也沒有在任何地方初始化ie1
和ie2
變量。 我可以看到它們代表ItemEvent
引用,但是它們的范圍僅限於ItemListener
'方法。
如果您使用的是Eclipse,它將為您提供快速修復。 但是,如果您是我,那么我將首先開始Java for Beginners
閱讀Java for Beginners
,然后再轉向AWT / Swing和SWT / JFace。
嘗試從更基本的內容開始。 在我看來,上面的代碼對您來說有點不知所措。 祝你好運,小小程序員。
幾件事:您不需要ItemListeners即可獲得組合框的選定值,而只需
Object ie1 = jcb1.getSelectedItem();
Object ie2 = jcb2.getSelectedItem();
正上方
if(ie1.equals(" Select the Size "))
{
JOptionPane.showMessageDialog(null,"Please select the size of the Frame");
}
並且由於您使用的是匿名內部類,因此需要確保將jcb1
和jcb2
聲明為final
,如下所示:
final JComboBox jcb1 = new JComboBox();
同樣,將ie1.getItem().equals(...)
更改為ie1.equals(...)
,並對ie2
進行相同的ie2
。
另一方面,請勿在if語句后加上分號。
對:
if(ie1.equals("100 x 100"))
{
...
}
錯誤:
if(ie1.equals("100 x 100"));
{ //^
...
}
因此,刪除那些if語句之后的分號。
綜上所述,我絕對建議您遵循GGrec的建議,並開始閱讀一些Java教程 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.