我正在寻找一种方法来放置一个使用Graphics的JComponent以及其他JComponents,例如JRadioButton。
因此,我尝试在我的JPanel中构建GridBagConstraints以便于放置。但我无法弄清楚如何使用正确的约束将图形组件放置在网格上。如果我添加约束,则会出现一小部分图形。
我的代码如下:
public class Interface extends JFrame{
private Visualization v;
private GridBagConstraints constraints=new GridBagConstraints();
private JRadioButton temperature,pluviometry;
public Interface(Visualization v){
this.setTitle("Pluviometry Data Viewer");
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.v=v;
//this.getContentPane().add(v);
//this.getContentPane().setLayout(new GridBagLayout());
constraints.gridx=0;
constraints.gridy=0;
constraints.gridheight=(int)v.getPreferredSize().getSize().getHeight();
constraints.gridwidth=(int)v.getPreferredSize().getSize().getWidth();
//constraints.fill=BOTH;
this.add(v);
//this.add(new JRadioButton("Temperature", true),constraints);
this.setVisible(true);
this.pack();
this.setSize(new Dimension(540, 360));
}
}
public class Visualization extends JComponent {
Data data;
private int y_axis=210;
private int x_axis=450;
public Visualization(Data d){
this.data=d;
}
@Override
public void paintComponent(Graphics g){
int width=getWidth();
int height=getHeight();
g.setColor(new Color(255, 78, 23));
g.drawLine(50, 20, 50, 230);
g.drawLine(50, 230, 500, 230);
for(int i=100;i<=500;i+=50){
g.drawLine(i, 230, i, 240);
}
for(int i=180;i>0;i-=40){
g.drawLine(50, i, 40, i);
}
}
@Override
public Dimension getPreferredSize(){
return new Dimension(200,100);
}
}
感谢。
答案 0 :(得分:1)
有很多小问题......
GridBagLayout
GridBagConstraints
Visualization
preferredSize
的{{1}}与您实际渲染的内容不匹配Visualization
setVisible
上致电setSize
JFrame
和gridwidth
是在gridheight
上下文中的单元格中测量的,而不是像素...... 例如......
GridBagLayout