2016-11-03 19 views
0

Итак, я работаю над проектом для своего класса Java. Целью является создание базовой программы GUI, которая отображает Hello World в виде строки и предоставляет четыре кнопки для управления строкой. Что-то вроде этого: exampleКак добавить GridLayout JButtons под JLabel?

Я даже не дошли до манипуляционной части программы пока я не могу показаться, чтобы получить мое окно отформатирован правильно, независимо от того, что я стараюсь.

Я могу получить свои четыре кнопки для отображения, но все, что я бросил на него, чтобы получить JLabel для отображения Hello World над кнопками, полностью терпит неудачу.

Это кажется очень простым, поэтому я боюсь, что есть что-то очевидное, что мне не хватает. Я проверил сеть в течение недели и нашел много информации о том, как это сделать теоретически, поэтому из того, что я могу понять, это должна быть проблема с моим синтаксисом.

На сегодняшний день я не нашел реализации, которая делает что-либо в соответствии с тем, что мне нужно делать. Это сводит меня с ума, и я собираюсь пройти свой срок в любом случае. Я просто должен ответить! Большое вам спасибо всем, кто может указать мне в правильном направлении!

Вот мой код в его текущей форме. Я чувствовал, что с этим согласен, но при запуске он возвращает исключение из консоли. Опять же, вся помощь очень ценится!

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

public class HelloWorld 
{ 
    private JButton uppercaseButton; 
    private JButton lowercaseButton; 
    private JButton phraseButton; 
    private JButton resetButton; 

    private JPanel grid; 

    public JPanel ButtonGrid() 
    { 

     JPanel grid = new JPanel(); 

     grid.setLayout(new GridLayout(2, 2)); 
     uppercaseButton = new JButton("Uppercase"); 
     lowercaseButton = new JButton("Lowercase"); 
     phraseButton = new JButton("New Phrase"); 
     resetButton = new JButton("Reset");  

     grid.add(uppercaseButton); 
     grid.add(lowercaseButton); 
     grid.add(phraseButton); 
     grid.add(resetButton); 

     return grid; 
    } 

    private static void createAndShowGUI() 
    { 
     JFrame frame = new JFrame("THIS IS MY TITLE"); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     JLabel lbl = new JLabel("HELLO WORLD"); 
     lbl.setPreferredSize(new Dimension(175, 100)); 
     frame.getContentPane().add(lbl, BorderLayout.PAGE_START); 

     ButtonGrid b = new ButtonGrid(); 
     b.setVisible(true); 
     b.setSize(300, 200); 
     frame.getContentPane().add(b, BorderLayout.CENTER); 

     frame.pack(); 
     frame.setVisible(true); 
    } 

    public static void main(String[] args){ 

     javax.swing.SwingUtilities.invokeLater(new Runnable() { 
      public void run() { 
       createAndShowGUI(); 
      } 
     }); 

    } 

} 
+0

Как насчет использования GridLayout, в котором есть 1 столбец и 2 строки, затем добавьте JLabel. После этого добавьте еще один JPanel и установите диспетчер компоновки этого в другой GridLayout из 2x2. Теперь вам просто нужно добавить 4 кнопки в JPanel. – redxef

ответ

2
ButtonGrid b = new ButtonGrid(); 

ButtonGrid не класс, это метод класса HelloWorld, который возвращает экземпляр JPanel.

Так что вам нужно, чтобы создать экземпляр HelloWorld класса, так что вы можете вызвать метод:

HelloWord hw = new HelloWorld() 
JPanel b = hw.ButtonGrid(); 

И так как «buttonGrid» является метод не должен начинаться с верхнего регистра символов, так что вам нужно переименуйте этот метод, а затем используйте:

//ButtonGrid b = new ButtonGrid(); 
HelloWord hw = new HelloWorld() 
JPanel b = hw.buttonGrid(); 
0

Спасибо обеим рекомендациям для указания меня в правильном направлении!

В конечном итоге работа была в основном тем, что предлагалось сначала в redxef. Затем Камикр помог мне дальше, потому что я думал о том, что мои методы не так. Объединив оба этих JPanels в первый метод и переименовав его в HelloWorld, я смог очистить некоторые другие проблемы, которые у меня были.

Я рад сообщить, что в результате проект был закончен и включен примерно через час. Опять же, большое спасибо!

+0

Рад помочь. Не забудьте «принять» ответ, нажав на галочку, чтобы люди знали, что проблема решена. – camickr

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

  • Нет связанных вопросов^_^