我想在Groovy中使用SwingBuilder更改背景颜色。
import groovy.swing.SwingBuilder
import java.awt.BorderLayout
import java.awt.Color
import java.awt.Font
class BackgroundWork {
static void main(String[] args) {
def background = new Color(155, 155, 110)
Font font = new Font("Serif", Font.SERIF, 17)
def swing = new SwingBuilder()
swing.edt {
frame(title: 'Prosty edytor', size: [200, 200], show: true) {
borderLayout()
textArea(id: 'TextArea', lineWrap: true, wrapStyleWord: true, columns: 50, rows: 5, editable: true, background: background).setFont(font)
button(text: 'Click me', constraints: BorderLayout.SOUTH, actionPerformed: {
background = java.awt.Color.RED
})
}
}
}
}我使用的SwingBuilder与简单的框架。如何刷新数据onClick
编辑
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException: Cannot set property 'background' on null object发布于 2022-01-08 10:16:24
你正在替换错误的背景。如果只将背景设置为新颜色,则要将作业替换为背景,而不是文本区域的背景。
您可以通过保持创建的文本区域并在其上分配背景来更改背景。
例如。
import groovy.swing.SwingBuilder
import java.awt.BorderLayout
import java.awt.Color
class BackgroundWork {
static void main(String[] args) {
def background = new Color(155, 155, 110)
def swing = new SwingBuilder()
swing.edt {
frame(title: 'Prosty edytor', size: [200, 200], show: true) {
borderLayout()
// XXX
def ta = textArea(id: 'TextArea', lineWrap: true, wrapStyleWord: true, columns: 50, rows: 5, editable: true, background: background)
button(text: 'Click me', constraints: BorderLayout.SOUTH, actionPerformed: {
// XXX
ta.background = java.awt.Color.RED
})
}
}
}
}https://stackoverflow.com/questions/70628122
复制相似问题