将我的组件设置在指定的位置



我想做的是将我的组件放在应用程序的右侧。第二个选项是将它放在指定的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

相关内容

  • 没有找到相关文章

最新更新