2014-10-22 3 views
0

У меня этот графический интерфейс, и он отлично работает, но теперь я хотел добавить панель инструментов, в которой будет кнопка «Файл», которая будет работать с двумя вариантами, которые являются «Выход» и «О». Предполагается, что выход закрывает графический интерфейс, в то время как About должен выдавать другое поле JFrame, содержащее строку о назначении. По какой-то причине я не смог заставить мой JMenubar появиться там, когда я запускаю программу. Я могу напечатать материал, который позволяет мне узнать, является ли слово или строка палиндром или нет, но не удавалось с помощью панели инструментов. Как мне его реализовать, чтобы на панели инструментов отображалась кнопка «файл», которая имеет два варианта ниже? Я не так хорош, когда речь заходит о графическом интерфейсе, поэтому я был бы счастлив, если вы пройдете меня через это. Благодаря Вот мой код нижеКак мне показать свою панель инструментов?

import java.awt.BorderLayout; 
import java.awt.Color; 
import java.awt.Dimension; 
import java.awt.Font; 
import java.awt.GridBagLayout; 
import java.awt.GridLayout; 
import java.awt.Insets; 
import java.awt.TextField; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JMenu; 
import javax.swing.JMenuBar; 
import javax.swing.JMenuItem; 
import javax.swing.JPanel; 
import javax.swing.JTextArea; 
import javax.swing.JTextField; 

/* 
* To change this license header, choose License Headers in Project Properties. 
* To change this template file, choose Tools | Templates 
* and open the template in the editor. 
*/ 
/** 
* 
* @author Owner 
*/ 
public class PalindromGUI extends JFrame { 

    private JTextField TextField; 
    private JTextArea textArea; 
    private JMenuBar menubar; 
    private JMenuItem exit; 
    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) 
    { 
     PalindromGUI gui = new PalindromGUI(); 

     gui.setVisible(true); 

    } 

    public PalindromGUI() { 

     this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     setBounds(50,50,90,650); 

//Create a panel and add components to it. 
     JPanel contentPane = new JPanel(); 
     BorderLayout experimentLayout = new BorderLayout(); 

     contentPane.setLayout(experimentLayout); 

     contentPane.setPreferredSize(new Dimension(800, 500)); 

     TextField = new JTextField(); 
     TextField.setForeground(new Color(0, 0, 0)); 
     TextField.setOpaque(true); 
     TextField.setBackground(new Color(255, 255, 255)); 
     TextField.setFont(new Font("Verdana", Font.PLAIN, 30)); 
     TextField.setMargin(new Insets(20, 20, 20, 20));//add margin 30 
     TextField.setText("Enter a word to see if it is a palindrome"); 
     TextField.setEditable(false); 

     //toolbar 
     menubar = new JMenuBar(); 
     setJMenuBar(menubar); 

     exit = new JMenuItem(); 


     // exit.addActionListener(new exitApp()); 
      contentPane.add(exit); 




//   menubar.setForeground(new Color(0, 0, 0)); 
//  menubar.setOpaque(true); 
//  menubar.setBackground(new Color(255, 255, 255)); 
//  menubar.setFont(new Font("Verdana", Font.PLAIN, 40)); 
//  menubar.setMargin(new Insets(20, 20, 20, 20)); 
//   



     textArea = new JTextArea(); 
     textArea.setForeground(new Color(0, 0, 0)); 
     textArea.setOpaque(true); 
     textArea.setBackground(new Color(255, 255, 255)); 
     textArea.setFont(new Font("Verdana", Font.PLAIN, 40)); 
     textArea.setMargin(new Insets(20, 20, 20, 20));//add margin 30 
     JButton enter = new JButton(); 
     enter.setText("GO"); 
     enter.addActionListener(new ActionListener() { 

      @Override 
      public void actionPerformed(ActionEvent ae) { 
       String pal = textArea.getText(); 
       String temp = pal.replaceAll("\\W", ""); 

       Palindrome myPalindrome = new Palindrome(temp); 

       if (myPalindrome.isPalindrome()) { 
        TextField.setText(pal + " is a palindrome"); 
       } else { 
        TextField.setText(pal + " is not a palindrome"); 
       } 
       textArea.setText(""); 
      } 
     }); 



     contentPane.add(enter, BorderLayout.EAST); 
     contentPane.add(textArea, BorderLayout.SOUTH); 
     contentPane.add(TextField, BorderLayout.CENTER); 
     contentPane.add(menubar, BorderLayout.PAGE_START); 

     setContentPane(contentPane); 

//  this.add(contentPane); 

     this.pack(); 

     this.setVisible(true); 
    } 


} 

ответ

1

Методика заключается в создании JMenuBar, который содержит JMenu, который в свою очередь, содержат JMenuItem х, например .:

//toolbar 
JMenu fileMenu = new JMenu("File"); 

exit = new JMenuItem("Exit"); 

fileMenu.add(new JMenuItem("About")); 
fileMenu.add(exit); 

menubar = new JMenuBar(); 
menubar.add(fileMenu); 
setJMenuBar(menubar); 
+0

Спасибо, что сделал трюк. Мне также интересно, как добавить функции в «Выход» и «О»? Видимо, они просто струны. Как я могу заставить их работать? – UniQuadrion

+0

-1, этот ответ уже был дан 9 минутами ранее. Не нужно загромождать форум дублирующимися ответами. Ложка, кормящая код, не помогает OP учиться. Обратите внимание на следующий вопрос. 'Как я могу заставить их работать?' OP еще не прочитал учебник и ждет, когда вы напишете код. – camickr

+0

@UniQuadrion Начните с чтения руководств, предоставленных Camickr, а также [Как использовать кнопки] (http://docs.oracle.com/javase/tutorial/uiswing/components/button.html) и [Как написать ActionListeners] (http://docs.oracle.com/javase/tutorial/uiswing/events/actionlistener.html), это основные понятия, которые вы много спасете, поэтому найдите их, чтобы узнать их. – MadProgrammer

1
menubar = new JMenuBar(); 
    setJMenuBar(menubar); 
    exit = new JMenuItem(); 

Вы ничего не добавляют к меню. Вам нужно создать JMenu и добавить его в меню. Затем вам нужно добавить свой меню в меню.

Для получения дополнительной информации и рабочих примеров ознакомьтесь с разделом из учебника Swing по телефону How to Use Menus.

+1

-1 это на самом деле не показывают OP, как должно быть структурированное меню. – BarrySW19

+0

Я просматриваю эту ссылку о меню. Спасибо – UniQuadrion

+0

@ BarrySW19, 'на самом деле не показывает OP, как следует структурировать меню' - уверен, что это так. Я использовал английский для объяснения концепции. JMenu добавляется в JMenuBar, а JmenuItem добавляется в JMenu. Вам не нужен код для объяснения простой структуры. – camickr

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