2016-01-08 3 views
0

Что вы, ребята, я пытаюсь понять, как реализовать BoxLayout или любой макет в java swing. Я смотрел учебники по оракулу и другим, но я просто не могу заставить его работать. Это для задания в колледже, поэтому я был бы признателен, что не дал бы мне решение прямо, но, возможно, просто укажу мне в правильном направлении. Я думаю, проблема в том, что мой код отличается от того, что находится в учебниках, поэтому я не уверен, что происходит.Борьба с BoxLayout в Java Swing

import javax.swing.*; 
import java.awt.event.*; 
import java.util.Random; 
import javax.swing.BoxLayout; 


class Window extends JFrame implements ActionListener 
{ 


    JPanel panel = new JPanel(); 
    JTextField input = new JTextField(10); 
    JButton but1 = new JButton ("Convert"); 
    JLabel label = new JLabel(); 
    JTextArea output = new JTextArea(1, 20); 



    public static void main(String[] args) 
     { 
      Window gui = new Window(); 
      String[] days = {"Monday", "Tuesday", "Wednesday", "Thursday", "Friday"}; 

     } 


    public Window() 
     { 
      super("Swing Window"); 
      setSize(500, 200); 
      setDefaultCloseOperation(EXIT_ON_CLOSE); 
      panel.add(input); 
      but1.addActionListener(this); 
      add(panel); 
      panel.add(output); 
      label.setText ("please enter celsius to be converted to Fahrenheit"); 
      panel.add(but1); 
      panel.add(label); 
      setVisible(true); 
     } 

    public void actionPerformed(ActionEvent event) 
    { 
     String inputStr = input.getText(); 
     inputStr = inputStr.trim(); 
     double input = Double.parseDouble(inputStr); 
     double fahrenheit = input * 1.8 + 32; 


     if (event.getSource() == but1) 
     { 
      output.setText("Here is degrees celsius " + input + " converted `to Fahrenheit: " + fahrenheit);` 
     } 
    } 


} 

Существует исполняемый код.

+1

Пожалуйста, пост здесь ваш код в ваш вопрос. Не используйте внешние веб-сайты для публикации своего кода. Благодарю. «Просто укажите мне в правильном направлении» правильное направление туда, где? Вы никогда не говорили, что ваша проблема – Frakcool

+3

1) код должен быть размещен на форуме с вашим вопросом. 2) Мы понятия не имеем, в чем проблема. Какое требование? Что происходит в настоящее время. «Я думаю, проблема в том, что мой код отличается от того, что находится в учебниках» - если это проблема, тогда снова загрузите демонстрационный код из учебника, чтобы он был точно таким же. Затем вы меняете по одной строке за раз, а затем проверяете и повторяете, пока не получите то, что хотите. Затем в любое время, когда он перестает работать, вы знаете, какую строку вы изменили. – camickr

+0

1) Извините, что я опубликовал код от pasetbin, прежде чем я не знал, что это запрещено. 2) «Я думаю, что проблема заключается в том, что мой код отличается от того, что находится в учебниках, поэтому я не уверен, что происходит». Это взято из моего вопроса, который я использовал оракул, но не понимаю, как реализовать то, что находится в учебник в моем коде. – BigBoss04772

ответ

1

Я снял ваш код, но не выполнил его. Как уже упоминалось в комментариях, вам полезно описать, что делает программа, и описать, что вы ожидаете/хотите. В противном случае мы просто догадываемся о том, что не так и что было бы правильно.

Из моего чтения вашего кода, я думаю, вы ничего не видите. Исправление: вы звонили add(); как указано в одном из более поздних комментариев Вот не некоторые замечания/пояснение:

  • Вашего метод addComponentsToPane() не вызывается, таким образом, вы никогда не создаете какой-либо BoxLayout объектам
  • Рекомендации: имена переменных начинаются с нижним регистром, и дон 't называть переменную такой же, как класс; он легко создает путаницу при чтении кода. Таким образом, не назовите аргумент Window.
  • Ваш метод addComponentsToPane(), если он был вызван, создает объект Layout и устанавливает его на переданный ему компонент, но фактически не добавляет никаких компонентов. Название, таким образом, вводит в заблуждение.
  • Область содержимого JFrame по умолчанию имеет BorderLayout. Когда компоненты добавляются без каких-либо дополнительных ограничений, BorderLayout решает разместить компоненты в определенном порядке (начиная с BorderLayout.CENTER). См. documentation of the JFrame class, где указано, что значение по умолчанию - BorderLayout.
  • A JPanel, при создании с помощью конструктора по умолчанию имеет значение FlowLayout.
  • Поскольку ваша программа никогда не меняла менеджера компоновки панели, это то, что вы наблюдаете слева направо.
  • Вы хотите установить макет панели на вертикальной BoxLayout, прежде чем добавлять компоненты к нему
+0

Я ценю, что вы тратите свое время, чтобы дать мне советы и попытаться помочь мне, а не просто указывать на все, что не так с моим сообщением. Спасибо, миллион приятель. – BigBoss04772