Dialogs
In this part of the JRuby Swing programming tutorial, we will work with dialogs.Dialog windows or dialogs are an indispensable part of most modern GUI applications. A dialog is defined as a conversation between two or more persons. In a computer application a dialog is a window which is used to "talk" to the application. A dialog is used to input data, modify data, change the application settings etc. Dialogs are important means of communication between a user and a computer program.
Message boxes
Message boxes are convenient dialogs that provide messages to the user of the application. The message consists of text and image data.#!/usr/local/bin/jrubyWe use the
# ZetCode JRuby Swing tutorial
#
# This program demonstrates
# message dialogs.
#
# author: Jan Bodnar
# website: www.zetcode.com
# last modified: December 2010
include Java
import java.awt.GridLayout
import javax.swing.JFrame
import javax.swing.JButton
import javax.swing.JPanel
import javax.swing.JOptionPane
class Example < JFrame
def initialize
super "Message boxes"
self.initUI
end
def initUI
panel = JPanel.new
panel.setLayout GridLayout.new 2, 2
errorButton = JButton.new "Error"
errorButton.addActionListener do |e|
JOptionPane.showMessageDialog panel, "Could not open file",
"Error", JOptionPane::ERROR_MESSAGE
end
warningButton = JButton.new "Warning"
warningButton.addActionListener do |e|
JOptionPane.showMessageDialog panel, "A deprecated call",
"Warning", JOptionPane::WARNING_MESSAGE
end
questionButton = JButton.new "Question"
questionButton.addActionListener do |e|
JOptionPane.showMessageDialog panel, "Are you sure to quit?",
"Question", JOptionPane::QUESTION_MESSAGE
end
informButton = JButton.new "Information"
informButton.addActionListener do |e|
JOptionPane.showMessageDialog panel, "Download completed",
"Information", JOptionPane::INFORMATION_MESSAGE
end
panel.add errorButton
panel.add warningButton
panel.add questionButton
panel.add informButton
self.add panel
self.setDefaultCloseOperation JFrame::EXIT_ON_CLOSE
self.setSize 300, 200
self.setLocationRelativeTo nil
self.setVisible true
end
end
Example.new
GridLayout
manager to set up a grid of four buttons. Each of the buttons shows a different message box. errorButton.addActionListener do |e|In case we pressed the error button, we show the error dialog. We use the
JOptionPane.showMessageDialog panel, "Could not open file",
"Error", JOptionPane::ERROR_MESSAGE
end
showMessageDialog
method to show the dialog on the screen. The first parameter of this method is the panel, in which the dialog is displayed. The second parameter is the message to be displayed. The third parameter is the title of the dialog. The final parameter is the message type. The default icon is determined by the message type. In our case, we have ERROR_MESSAGE
message type for the error dialog. Figure: Error message dialog
JFileChooser
JFileChooser
dialog allows user to select a file from the filesystem. #!/usr/local/bin/jrubyIn our code example, we use the
# ZetCode JRuby Swing tutorial
#
# In this program, we use a JFileChooser
# to load a c file.
#
# author: Jan Bodnar
# website: www.zetcode.com
# last modified: December 2010
include Java
import java.awt.BorderLayout
import java.awt.Color
import javax.swing.JFrame
import javax.swing.JButton
import javax.swing.JPanel
import javax.swing.JToolBar
import javax.swing.JFileChooser
import javax.swing.JTextArea
import javax.swing.JTextPane
import javax.swing.JScrollPane
import javax.swing.BorderFactory
import javax.swing.filechooser::FileNameExtensionFilter
class Example < JFrame
def initialize
super "FileChooser"
self.initUI
end
def initUI
@panel = JPanel.new
@panel.setLayout BorderLayout.new
toolbar = JToolBar.new
openb = JButton.new "Choose file"
openb.addActionListener do |e|
chooseFile = JFileChooser.new
filter = FileNameExtensionFilter.new "c files", "c"
chooseFile.addChoosableFileFilter filter
ret = chooseFile.showDialog @panel, "Choose file"
if ret == JFileChooser::APPROVE_OPTION
file = chooseFile.getSelectedFile
text = self.readFile file
@area.setText text.to_s
end
end
toolbar.add openb
@area = JTextArea.new
@area.setBorder BorderFactory.createEmptyBorder 10, 10, 10, 10
pane = JScrollPane.new
pane.getViewport.add @area
@panel.setBorder BorderFactory.createEmptyBorder 10, 10, 10, 10
@panel.add pane
self.add @panel
self.add toolbar, BorderLayout::NORTH
self.setDefaultCloseOperation JFrame::EXIT_ON_CLOSE
self.setSize 450, 400
self.setLocationRelativeTo nil
self.setVisible true
end
def readFile file
filename = file.getCanonicalPath
f = File.open filename, "r"
text = IO.readlines filename
return text
end
end
Example.new
JFileChooser
dialog to select a C file and display its contents in a JTextArea
. @area = JTextArea.newThis is the
JTextArea
in which we will show the contents of a selected file. chooseFile = JFileChooser.newWe create an instance of the
filter = FileNameExtensionFilter.new "c files", "c"
chooseFile.addChoosableFileFilter filter
JFileChooser
dialog. We create a filter which will show only C files. ret = chooseFile.showDialog @panel, "Choose file"The dialog is shown on the screen. We get the return value.
if ret == JFileChooser::APPROVE_OPTIONIf the user has selected a file, we get the name of the file. Read its contents and set the text to the text area component.
file = chooseFile.getSelectedFile
text = self.readFile file
@area.setText text.to_s
end
def readFile fileThis code reads the text from the file. The
filename = file.getCanonicalPath
f = File.open filename, "r"
text = IO.readlines filename
return text
end
getCanonicalPath
returns an absolute file name. Figure: JFileChooser
In this part of the JRuby Swing tutorial, we worked with dialog windows.
No comments:
Post a Comment