Создание GUI с помощью RUBY - PullRequest
0 голосов
/ 17 ноября 2010

Я очень впечатлен Ruby, и я экспериментирую с JRuby в NetBeans. Но трудно получить больше, чем небольшую информацию об использовании JRuby с Swing. На данный момент у меня есть следующая программа, которая работает, за исключением закомментированной строки.

require 'java'

include_class 'java.awt.event.ActionListener'
include_class 'javax.swing.JButton'
include_class 'javax.swing.JFrame'

class ClickAction
   include ActionListener

   def actionPerformed(event)
      puts "Button clicked"
   end
end #ClickAction

class MainWindow < JFrame
   def initialize
      super "JRuby Swing Demo"
      setDefaultCloseOperation JFrame::EXIT_ON_CLOSE
      button = JButton.new "Click me"
      button.setSize 30, 100                  #this line does nothing
      button.addActionListener ClickAction.new
      add button        
      pack
   end
end

mainWindow = MainWindow.new
mainWindow.setSize 300, 300
mainWindow.setVisible(true)

Когда я запускаю это, кнопка автоматически расширяется, чтобы занимать все окно. Так почему же «setSize» работает в главном окне, а не на кнопке.

Кроме того, есть ли метод setBounds, аналогичный Java?

Спасибо за любую помощь в этом. Я кодирую свои собственные макеты в Java, и это то, что я хотел бы сделать в JRuby.

1 Ответ

0 голосов
/ 19 ноября 2010

Это связано с компоновкой mainWindow и является тем же поведением, что и при написании на Java.По умолчанию BorderLayout , который изменяет размер содержимого фрейма.Вы можете попробовать использовать что-то вроде FlowLayout .

Конечно, есть метод setBounds.

...