2014-10-22 7 views
0

Я понятия не имею, почему мой JFrame не отображается и его действительно прослушивает, и я чувствую, что мне что-то не хватает, и я просто не вижу его. Так что любая помощь была бы потрясающей!JFrame не отображается, ничего не отображается

вот код:

import java.awt.*; 
import java.awt.EventQueue; 
import javax.swing.*; 
import javax.swing.GroupLayout.*; 

public class Lorenzo_ChatClient_class extends JFrame { 

private JPanel contentPane; 
private JTextField textField; 
private JTextField textField_1; 

public static void main(String[] args) { 
    EventQueue.invokeLater(new Runnable() { 
     public void run() { 
      try { 
       Lorenzo_ChatClient_class frame = new Lorenzo_ChatClient_class(); 
       frame.setVisible(true); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
     } 
    }); 
} 

/** Create the frame. */ 
public Lorenzo_ChatClient_class() { 
    //setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    setBounds(100, 100, 450, 300); 
    JFrame frame = new JFrame(); 
    frame.setSize(100,100); 

    contentPane = new JPanel(); 
    contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); 
    setContentPane(contentPane); 
    contentPane.setLayout(null); 

    textField_1 = new JTextField(); 
    textField_1.setBounds(0, 244, 450, 34); 
    contentPane.add(textField_1); 
    textField_1.setColumns(10); 

    JButton btnNewButton = new JButton("Send"); 
    btnNewButton.setBounds(351, 6, 99, 122); 
    contentPane.add(btnNewButton); 

    JButton btnNewButton_1 = new JButton("Quit"); 
    btnNewButton_1.setBounds(351, 124, 99, 122); 
    contentPane.add(btnNewButton_1); 

    JTextArea textArea_1 = new JTextArea(); 
    textArea_1.setBorder(UIManager.getBorder("EditorPane.border")); 
    textArea_1.setBounds(6, 6, 345, 240); 
    contentPane.add(textArea_1); 

    JTextArea textArea = new JTextArea(); 

    textField = new JTextField(); 
    textField.setColumns(10); 


} 
} 
+0

Вы можете упростить основной метод этой линии: 'EventQueue.invokateLater (() -> новый Lorenzo_ChatClient_class(). setVisible (true)); ' – msrd0

+0

' JFrame frame = new JFrame(); frame.setSize (100,100); 'Этот кадр? тот, который вы еще не добавили в свою панель контента? Или текстовое поле, которое вы не добавили? – Compass

ответ

0

Таким образом, очевидно, я перечитал ваш код слишком быстро, потому что у вас есть Lorenzo_ChatClient_class простирающейся JFrame. Это радикально меняет решение.

Я думаю, что ваш основной метод выглядит хорошо. Вы не должны вызывать переопределяемые методы в конструкторе; это приводит к множеству ошибок. Попробуйте изменить код:

import java.awt.*; 
import java.awt.EventQueue; 
import javax.swing.*; 
import javax.swing.GroupLayout.*; 
import javax.swing.border.*; 

class Lorenzo_ChatClient_class extends JFrame { 
private JPanel contentPane; 
private JTextField textField; 
private JTextField textField_1; 

public static void main(String[] args) { 
    EventQueue.invokeLater(new Runnable() { 
     public void run() { 
      try { 
       Lorenzo_ChatClient_class frame = new Lorenzo_ChatClient_class(); 
       frame.setVisible(true); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
     } 
    }); 
} 

public Lorenzo_ChatClient_class() { 
    super(); 
    frameSetup(); 
    setVisible(true); // or just keep it in your main method 
} 

private void frameSetup() { 
    this.setBounds(100, 100, 450, 300); 
    this.setSize(100, 100); 
    this.contentPane = new JPanel(); 
    contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); 
    setContentPane(contentPane); 
    contentPane.setLayout(null); 

    textField_1 = new JTextField(); 
    textField_1.setBounds(0, 244, 450, 34); 
    contentPane.add(textField_1); 
    textField_1.setColumns(10); 

    JButton btnNewButton = new JButton("Send"); 
    btnNewButton.setBounds(351, 6, 99, 122); 
    contentPane.add(btnNewButton); 

    JButton btnNewButton_1 = new JButton("Quit"); 
    btnNewButton_1.setBounds(351, 124, 99, 122); 
    contentPane.add(btnNewButton_1); 

    JTextArea textArea_1 = new JTextArea(); 
    textArea_1.setBorder(UIManager.getBorder("EditorPane.border")); 
    textArea_1.setBounds(6, 6, 345, 240); 
    contentPane.add(textArea_1); 

    JTextArea textArea = new JTextArea(); 

    textField = new JTextField(); 
    textField.setColumns(10); 
    } 
} 

Я просто попробовал, и это работает для меня, хотя это небольшая рамка. Не знаете, каковы ваши аргументы в пользу наличия setbounds(100, 100, 450, 300), а затем сразу setSize(100,100). Вы устанавливаете размер до 450x300, а затем сразу же устанавливаете размер до 100x100. Я удалил линию setSize(100, 100), и JFrame открылся намного приятнее.

+0

может показать мне, как это сделать на anychance? – tharealdeal15

+0

Я отредактировал свой ответ, потому что слишком быстро прочитал ваш код. Вы правильно расширили JFrame, но ваш конструктор был немного воинственным. Я переместил большую часть кода в метод установки, и этот код, похоже, работает. – velocirabbit

0

В вашей основной метод,

Lorenzo_ChatClient_class frame = new Lorenzo_ChatClient_class(); 

В конструкторе,

setBounds(100, 100, 450, 300); 
JFrame frame = new JFrame(); 
frame.setSize(100,100); 

You have taken class reference and JFrame names are same "frame".