gpt4 book ai didi

java Jpanel 和边框布局,向 PAGE_END 添加 2 个组件

转载 作者:行者123 更新时间:2023-11-29 05:53:41 25 4
gpt4 key购买 nike

我试图将 Jslider 和 Jlabel 添加到 PAGE_END 并排,我可以将它们中的每一个都添加到它们的 on 上,但是将 .add("components name".PAGE_END) 添加到它的 on 上让一个存在吗?

所以基本上我想创建我的 slider 和右侧旁边的 jlabel,无论如何有人可以帮忙,谢谢。

包分配;

//import java.awt.FlowLayout;
import java.awt.BorderLayout;
import javax.swing.JLabel;
import javax.swing.JSlider;
import javax.swing.JTextField;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;

public class MyControlPanel extends javax.swing.JPanel {

JSlider slider;
JLabel sliderLabel;
JLabel blank;

public MyControlPanel() {


slider = new JSlider();
slider.setValue(50);
slider.addChangeListener(new MyChangeAction());
slider.setMajorTickSpacing(10);
slider.setPaintLabels(true);
slider.setPaintTicks(true);
slider.setBounds(300, 50, 100, 50);
sliderLabel = new JLabel("50");
blank = new JLabel(" ");

JTextField boundary_length = new JTextField("Boundary Length");
JTextField area = new JTextField("Area");

setLayout(new BorderLayout());


this.add(slider, BorderLayout.PAGE_END);
this.add(sliderLabel, BorderLayout.LINE_END);
this.add(area);
this.add(boundary_length);
this.add(blank, BorderLayout.LINE_START);
}

@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 400, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 300, Short.MAX_VALUE)
);
}// </editor-fold>
// Variables declaration - do not modify
// End of variables declaration

public class MyChangeAction implements ChangeListener{

//complete code here

public void stateChanged(ChangeEvent ce)
{
int value = slider.getValue();
String str = Integer.toString(value);
sliderLabel.setText(str);


}

} // end class

最佳答案

不要使用 BorderLayout 来放置 slider 和标签,而是创建一个包含这两个组件的面板,然后使用 BorderLayout 来放置面板。

替换

this.add(slider, BorderLayout.PAGE_END);
this.add(sliderLabel, BorderLayout.LINE_END);

JPanel sliderPanel = new JPanel();
sliderPanel.setLayout( new FlowLayout(FlowLayout.TRAILING));
sliderPanel.add(slider);
sliderPanel.add(sliderLabel);
this.add(sliderPanel, BorderLayout.PAGE_END);

这是基于我用来在对话框底部放置“确定”和“取消”按钮的代码。这可能无法编译 - 但你明白了。尝试使用 FlowLayout 的参数并更改添加到 slider 面板的顺序,直到获得所需的外观。

顺便说一句 - 因为您是自己进行布局 - 而不是使用 GUI 生成器 - 您最好去掉 initComponents 方法和周围的注释。我猜您正在使用 Netbeans 并创建了一个最初配置为使用 GroupLayout 的面板,而 Netbeans 注入(inject)了该代码。现在它只是阻碍了。

关于java Jpanel 和边框布局,向 PAGE_END 添加 2 个组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12993568/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com