问题描述
selectizeInput
的文档对参数 selected
的描述如下。
selected 最初选择的值(或多个值,如果有多个 = 真)。如果未指定,则默认为单选列表的第一个值,多选列表没有值。
如果没有为 selected
指定任何内容,我将这句话解释为 choices
参数将是 selected
参数的第一个元素。但是,在以下示例中,在为第一个 selectizeInput
选择任何数字后,第二个 selectizeInput
不会选择第一个选项。它仍将默认消息显示为占位符。
请注意,如果我设置 server = TRUE
,第二个 selectizeInput
将能够将第一个选项显示为 selected
。
我想知道为什么 server = TRUE
或 server = FALSE
会影响 selected
是否可以作为 choices
中的第一个元素。我还想知道如何使 server = FALSE
的行为与 server = TRUE
时相同。
library(shiny)
ui <- fluidPage(
headerPanel("shinyStore Example"),sidebarLayout(
sidebarPanel = sidebarPanel(
selectizeInput(inputId = "Select1",label = "Select A Number",choices = as.character(1:3),options = list(
placeholder = 'Please select a number',onInitialize = I('function() { this.setValue(""); }'),create = TRUE
))
),mainPanel = mainPanel(
fluidRow(
selectizeInput(inputId = "Select2",label = "Select A Letter",choices = character(0),options = list(
placeholder = 'Please select a number in the sidebar first',create = TRUE
))
)
)
)
)
server <- function(input,output,session) {
dat <- data.frame(
Number = as.character(rep(1:3,each = 3)),Letter = letters[1:9]
)
observeEvent(input$Select1,{
updateSelectizeInput(session,inputId = "Select2",choices = dat$Letter[dat$Number %in% input$Select1],server = FALSE)
})
}
shinyApp(ui,server)
解决方法
为什么不在服务器端完全创建第二个 private static void contentGUI(Container pane) {
pane.setLayout(new BoxLayout(pane,BoxLayout.Y_AXIS));
JButton task1 = new JButton(" > Advanced CPU Settings");
pane.add(task1);
JButton task2 = new JButton(" > Advanced Memory Settings");
pane.add(task2);
JButton task3 = new JButton(" > Advanced GPU Settings");
pane.add(task3);
JButton task4 = new JButton(" > Advanced Case Fan Settings");
pane.add(task4);
}
private static void toolTips() throws IOException,FontFormatException {
JPanel toolTipPane = new JPanel();
toolTipPane.setLayout(new BoxLayout(toolTipPane,BoxLayout.Y_AXIS));
JButton tip1 = new JButton("Esc: Exit");
toolTipPane.add(tip1);
JLabel tip2 = new JLabel("F1: About");
toolTipPane.add(tip2);
}
?
selectizeInput