我在下面的代码中复制了一个奇怪的问题。我已经在模拟器和设备中进行了测试。结果是一样的。我在容器中有26个按钮(它的布局是flowlayout),它本身位于BorderLayout的南部(表单布局)。但只能看到部分按钮。我在下面的代码中做错了什么? revalidate也没有做任何事情。
setLayout(new BorderLayout());
TextArea questionTextArea = new TextArea("1) question ..........");
Container questionContainer = new Container();
questionContainer.add(questionTextArea);
Container questionAnswerContainer = BoxLayout.encloseY(questionContainer);
add(BorderLayout.CENTER, questionAnswerContainer);
Container optionsContainer = new Container(new FlowLayout(Label.CENTER, Label.CENTER));
for (int i = 0; i < 26; i++) {
Button optionButton = new Button("i");
optionsContainer.add(optionButton);
}
optionsContainer.revalidate();
Button skipButton = new Button("SKIP");
Container bottomContainer = BoxLayout.encloseY(optionsContainer, skipButton);
bottomContainer.revalidate();
add(BorderLayout.SOUTH, bottomContainer);
//f.revalidate();
这里只能看到7个btns。 skipButton也不存在。为什么没有显示其他按钮?
答案 0 :(得分:0)
请勿过多地调用<script src="js/jquery.serializeJSON.min.js"></script>
</head>
<body>
<form name="myform" id="myform">
<div class="form-group">
<label for="fullName">Name:</label>
<input type="text" name="fullName" class="form-control">
</div>
<div class="form-group">
<label for="email">Email:</label>
<input type="email" name="email" class="form-control">
</div>
<div class="form-group">
<label for="subject">Subject:</label>
<input type="text" name="subject" class="form-control">
</div>
<div class="form-group">
<label for="mark">Mark:</label>
<input type="number" name="mark" class="form-control">
</form>
</div>
<button type="submit" class="btn btn-success " id="submitform">Submit</button>
<script>
$(document).ready(function(){
$("#submitform").click(function(e)
{
var MyForm = JSON.stringify($("#myform").serializeJSON());
console.log(MyForm);
$.ajax(
{
url : "<your url>",
type: "POST",
data : MyForm,
});
});
});
</script>
,因为除了减慢应用程序速度外,它可能会破坏布局。它只应在整个布局完成时调用。
revalidate
对于这些情况通常是不稳定的,它是问题的根源。它要求宽度太大而高度太小的优选宽度/高度,然后当它实际放入容器时,它没有给出所需的空间量。如果没有回流就会出现问题,这会显着降低性能......
解决方法是使用更加确定的布局,例如自动调整的网格布局。