2016-04-24 2 views
-1

У меня есть эта активность, которая включает в себя графический интерфейс. Эта операция включает в себя ввод длины и ширины, x и y (расположение формы в холсте) и кнопку, которая выбирает форму, прямоугольник или круг. После нажатия кнопки он принимает длину, ширину, x и y внутри текстового поля.Java - JFrame, JPanel и Components Не показывать

После рутирования с помощью GUI-кода вручную JPanels и JFrames не будут отображаться даже после установки размера, просто чистого.

Я ожидал положить холст слева и метки, текстовые поля и кнопки справа. Что я делаю не так? Я все еще нахожусь в начале программы просто эстетичной. Спасибо.

public class Problem02{ 
    Problem02(){ 
     JFrame framer = new JFrame("Problem 02"); 
     framer.setLayout(new FlowLayout()); 
     framer.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     JPanel LPanel = new JPanel(); 
     JPanel RPanel = new JPanel(); 
     Canvas canvasses = new Canvas();Label XLabel = new Label("X"); 
     JLabel YLabel = new JLabel("Y"); 
     JLabel WidthLabel = new JLabel("Width"); 
     JLabel LengthLabel = new JLabel("Length"); 
     JButton RectangleButton = new JButton("Rectangle"); 
     JButton CircleButton = new JButton("Circle"); 
     JTextField XText = new JTextField(""); 
     JTextField YText = new JTextField(""); 
     JTextField WidthText = new JTextField(""); 
     JTextField LengthText = new JTextField(""); 

     framer.add(LPanel, BorderLayout.WEST); 
     framer.add(RPanel, BorderLayout.EAST); 
     LPanel.add(canvasses); 
     RPanel.add(XLabel); 
     RPanel.add(XText); 
     RPanel.add(YLabel); 
     RPanel.add(YText); 
     RPanel.add(WidthLabel); 
     RPanel.add(WidthText); 
     RPanel.add(LengthLabel); 
     RPanel.add(LengthText); 
     RPanel.add(RectangleButton); 
     RPanel.add(CircleButton); 

     framer.setSize(500,500); 
     framer.setTitle("Problem 02"); 
     framer.setVisible(true); 
    } 
    public static void main(String[] args) { 
    new Problem02(); 

    } 


    public void actionPerformed(ActionEvent e) { 
     throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. 
    } 

    public void windowOpened(WindowEvent e) { 
     throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. 
    } 

    public void windowClosing(WindowEvent e) { 
     throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. 
    } 

    public void windowClosed(WindowEvent e) { 
     throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. 
    } 

    public void windowIconified(WindowEvent e) { 
     throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. 
    } 

    public void windowDeiconified(WindowEvent e) { 
     throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. 
    } 

    public void windowActivated(WindowEvent e) { 
     throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. 
    } 

    public void windowDeactivated(WindowEvent e) { 
     throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. 
    } 

} 
+0

положить комплектVisible (true) в вашем основном методе нравится это. new Problem02.setVisible (true); –

+0

также вы должны добавить свой JPanel в свой JFrame, чтобы увидеть добавленные компоненты. use: framer.add (xPanel); –

+0

Я уже сделал framer.add (LPanel); и framer.add (RPanel); – user3255372

ответ

1

Вы простирающийся от JFrame PLUS вы используете переменную JFrame (Framer) ... вы добавляете все компоненты к переменной, но не показывают framer, вы показываете this.

Не выдвигайте JFrame, в последние изменения строки в

framer.setSize(500,500); 
    framer.setTitle("Problem 02"); 
    framer.setVisible(true); 

Plus, пожалуйста, придерживайтесь именования: строчные буквы для переменных, вы даже обмануть StackOverflows подсветки текста парсер ;-)

+0

Спасибо! Кстати, довольно новый для StackOverflow, могу ли я спросить о макетах здесь в этом комментарии? Я хотел, чтобы холст появился слева, а кнопки справа, но как я могу это сделать? FlowLayout был единственным языком, о котором учитель учил нас, и он только центрирует кнопки, и я не вижу холста. – user3255372

+0

Theres много хороших макетов. Вместо FlowLayout вы можете использовать BorderLayout, а строки 'framer.add (LPanel);' должны быть изменены на 'framer.add (LPanel, BorderLayout.WEST); framer.add (RPanel, BorderLayout.EAST); ' Или вы можете установить его в' CENTER'. – JayC667

+0

Я сделал то, что вы сказали об Восточном и Западном BorderLayout, и изменил framer.setLayout (новый FlowLayout()); to framer.setLayout (новый BorderLayout()) ;. Предполагается, что холст серый? Как я могу сделать холст, подходящий к боковой панели панели, как экран? Я хочу, чтобы вся левая панель была холстом. – user3255372

0

вы можете оставить Problem02 расширенным из Jframe, как и вы, но тогда вам не нужно использовать рамку объекта, и вы можете сделать это
this.setLayout (новый FlowLayout()); this.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);

и не забывайте об этом this.getContentPane(). Add (RPanel); this.getContentPane(). Add (LPanel);

+0

Я googled о getContentPane(); но определения тоже являются учебниками. Какова же цель? – user3255372

+0

Jframe похож на сумку, и вы накладываете на нее все свои элементы GUI, этот метод отвечает за это –

Смежные вопросы