我想做的是将我的组件放在应用程序的右侧。第二个选项是将它放在指定的x,y坐标中。然而,我尝试了setBounds()
、setLocation()
和add(component, BorderLayout.LINE_END)
函数。什么都不适合我。我的代码出了什么问题?
public class MapaSwiata extends JPanel implements ActionListener {
private BufferedImage mapa;
private File imageFile;
public MapaSwiata(){
super();
imageFile = new File("C:\Users\Katie\Documents\Eclipse\Samolot\src\Pics\img_mapa.jpg");
try {
mapa = ImageIO.read(imageFile);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
JOutlookBar outlookBar = new JOutlookBar();
outlookBar.addBar( "Pogoda", getDummyPanel("One"));
outlookBar.addBar( "Informacje o locie", getDummyPanel("Two" ));
outlookBar.addBar( "Rozkład Lotow", getDummyPanel( "Three" ) );
outlookBar.setVisibleBar( 2 );
add(outlookBar, BorderLayout.LINE_END);
}
public static JPanel getDummyPanel( String name )
{
JPanel panel = new JPanel( new BorderLayout() );
panel.add( new JLabel( name, JLabel.CENTER ) );
return panel;
}
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void paintComponent(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
g2d.drawImage(mapa, 0, 0, getWidth()-300, getHeight()-150, null);
}
}
我还试着放了一个JButton
或其他什么东西。所有内容始终显示在应用程序的顶部中心。很抱歉修改了变量的名称。
提前感谢
如果希望BorderLayout.LINE_END
具有效果,则必须将BorderLayout
应用于Container
。要做到这一点,只需添加
setLayout(new BorderLayout());
到您的构造函数MapaSwiata()
。
注意:您的子面板不需要BorderLayout
。