GUI: min bild syns knappt

Java

1 svar · 420 visningar · startad av Inte-net

Medlem sedan maj 20011 inlägg
Trådstart#1

När jag skrivit koden nedan så startar jag mitt grafiska fönster. Koden skall visa en bild längst upp som e som en överskrift samt en textarea tillsammans med en bild i mitten. De delar 50/50 på fönstret. Längst ner återfinns en textfield där man skriver samt en skicka knapp... som en chat ungefär. Problemet är att bilden längst upp blir jätteliten, 10 px hög då den ska vara 10 ggr högre. Vad kan detta bero på?

Koden:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Grafik extends JFrame{
JTextArea text;

static Grafik control;

	public Grafik(){

		super("Slaget om Märsta - Version 1.0");

		CloseLyssnare cl=new CloseLyssnare();
		addWindowListener(cl);

      Image bild = Toolkit.getDefaultToolkit().getImage("minbild.gif");
      ImagePanel imgPane = new ImagePanel(bild);

      Image logo = Toolkit.getDefaultToolkit().getImage("logo.gif");
      ImagePanel imgLogo = new ImagePanel(logo);

getContentPane().setLayout(new BorderLayout());

JTextField field=new JTextField();
JButton dobutton=new JButton("Action");
dobutton.addActionListener(cl);
text=new JTextArea();
text.setEditable(false);

JPanel pane;
pane = new JPanel();
pane.setLayout(new GridLayout(1, 2));
pane.add(text);
pane.add(imgPane);

getContentPane().add(pane, BorderLayout.CENTER);

pane = new JPanel();
pane.setLayout(new GridLayout(1,2));
pane.add(field);
pane.add(dobutton);

getContentPane().add(pane, BorderLayout.SOUTH);

pane = new JPanel();
pane.setLayout(new GridLayout(1,1));
pane.add(imgLogo);

getContentPane().add(pane, BorderLayout.NORTH);

setBackground(Color.black);
setSize(800, 600);
show();
setVisible(true);

}

public static void main(String[] argv){
control=new Grafik();
control.run();

}

public void run() {

	text.append("TEXTER!");

}

}

class CloseLyssnare extends WindowAdapter implements ActionListener{

public void actionPerformed(ActionEvent ae){
	System.exit(0);

}

public void windowClosing(WindowEvent we){

	System.exit(0);

}

}

class ImagePanel extends JPanel {
Image image;

public ImagePanel(Image image) {
	this.image = image;
}

public void paintComponent(Graphics g) {
	super.paintComponent(g);
	g.drawImage(image, 0, 0, this);
}

}

Medlem sedan juni 20008 205 inlägg
#2

Ääh... varför göra en massa trams själv, när du kan använda en JLabel?

public class Grafik extends JPanel{
	private JLabel rubrikLbl;
	private JTextArea text;
	// ev. andra deklarationer...

	public Grafik(){
		super("Slaget om Märsta - v/1.0");
		Icon bilden = new ImageIcon("rubrik.png");
		rubrikLbl = new JLabel(bilden);
	// etc
	}
}
270 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
133 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)