Hallo,
zwei kleine Problemchen habe ich noch mit meinem Projekt.
1. In der Textarea soll eine horizontale Scrolleiste erscheinen, wenn der Text zu lang ist. Dort, wo ich den Code einfüge funktioniert das aber nicht. Kompilieren funktioniert, aber die Scrollleiste erscheint nicht. Wo liegt mein Denkfehler?
2. Bei den Buttons habe ich einen leeren Platzhalter davor gesetzt, damit die in der Mitte stehen. Nicht sauber, sieht aber so aus, wie es aussehen soll. Wie geht das ohne diesen Platzhalter?
[HIGHLIGHT="Java"]import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class Projekt extends Ramen
{
private String text1;
void buildConstraints(GridBagConstraints gbc, int gx, int gy,
int gw, int gh, int wx, int wy) {
gbc.gridx = gx;
gbc.gridy = gy;
gbc.gridwidth = gw;
gbc.gridheight = gh;
gbc.weightx = wx;
gbc.weighty = wy;
}
public Projekt()
{
text1=("");
setSize(500, 400);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final GridBagLayout gridbag = new GridBagLayout();
final GridBagConstraints constraints = new GridBagConstraints();
final JPanel pane = new JPanel();
final JScrollPane scrollyta = new JScrollPane(pane);
pane.setLayout(gridbag);
// textfield
buildConstraints(constraints, 0, 0, 5, 1, 100, 0);
constraints.fill = GridBagConstraints.HORIZONTAL;
final JTextField textfält = new JTextField();
gridbag.setConstraints(textfält, constraints);
pane.add(textfält);
//========= Das hier ist schlampig, wie schaffe ich es, dass die Buttons in der Mitte der Zeile platziert
//========= werden ohne diesen Platzhalter hier?
// tomt platshåller
buildConstraints(constraints, 0, 1, 1, 1, 0, 0);
constraints.fill = GridBagConstraints.NONE;
constraints.anchor = GridBagConstraints.EAST;
JLabel label1 = new JLabel(" ", JLabel.LEFT);
gridbag.setConstraints(label1, constraints);
pane.add(label1);
// knapp1
buildConstraints(constraints, 1, 1, 1, 1, 0, 0);
constraints.fill = GridBagConstraints.NONE;
constraints.anchor = GridBagConstraints.CENTER;
JButton knapp1 = new JButton("Bild 1");
gridbag.setConstraints(knapp1, constraints);
pane.add(knapp1);
// knapp2
buildConstraints(constraints, 2, 1, 1, 1, 0, 0);
constraints.fill = GridBagConstraints.NONE;
constraints.anchor = GridBagConstraints.CENTER;
JButton knapp2 = new JButton("Bild 2");
gridbag.setConstraints(knapp2, constraints);
pane.add(knapp2);
// knapp3
buildConstraints(constraints, 3, 1, 1, 1, 0, 0);
constraints.fill = GridBagConstraints.NONE;
constraints.anchor = GridBagConstraints.CENTER;
JButton knapp3 = new JButton("Text area");
gridbag.setConstraints(knapp3, constraints);
pane.add(knapp3);
// Label 1 (Bild 1)
buildConstraints(constraints, 0, 2, 5, 10, 100, 100);
constraints.fill = GridBagConstraints.BOTH;
final JLabel lbl1 = new JLabel(new ImageIcon("wave.gif"),
SwingConstants.CENTER//inte nödvändig, men skadar inte
);
gridbag.setConstraints(lbl1, constraints);
pane.add(lbl1);
// Label 2 (Bild 2)
buildConstraints(constraints, 0, 2, 5, 10, 100, 100);
constraints.fill = GridBagConstraints.BOTH;
final JLabel lbl2 = new JLabel(new ImageIcon("surf.jpg"),
SwingConstants.CENTER//inte nödvändig, men skadar inte
);
gridbag.setConstraints(lbl2, constraints);
pane.add(lbl2);
lbl2.setVisible(false);
// textarea
buildConstraints(constraints, 0, 2, 5, 10, 100, 100);
constraints.fill = GridBagConstraints.BOTH;
final JTextArea textarea = new JTextArea();
gridbag.setConstraints(textarea, constraints);
pane.add(textarea);
textarea.setVisible(false);
// Content Pane
setContentPane(pane);
setVisible(true);
//========== Keiner der drei funktioniert
//textarea.add((scrollyta), BorderLayout.CENTER);
//textarea.add(new JScrollPane(textarea));
//getContentPane().add(scrollyta, BorderLayout.CENTER);
// knapp 1
knapp1.addActionListener
(
new ActionListener()
{
public void actionPerformed( ActionEvent event )
{
lbl2.setVisible(false);
textarea.setVisible(false);
lbl1.setVisible(true);
}
}
);
// knapp 2
knapp2.addActionListener
(
new ActionListener()
{
public void actionPerformed( ActionEvent event )
{
lbl1.setVisible(false);
textarea.setVisible(false);
lbl2.setVisible(true);
}
}
);
// knapp 3
knapp3.addActionListener
(
new ActionListener()
{
public void actionPerformed( ActionEvent event )
{
lbl1.setVisible(false);
lbl2.setVisible(false);
textarea.setVisible(true);
textarea.add((scrollyta), BorderLayout.CENTER);
}
}
);
// item1 - avsluta
item1.addActionListener
(
new ActionListener()
{
public void actionPerformed( ActionEvent event )
{
System.exit( 0 );
}
}
);
// item2 - lägg till text
item2.addActionListener
(
new ActionListener()
{
public void actionPerformed( ActionEvent event )
{
textarea.setText(text1 + textfält.getText());//fylla på innehåll från textfält och gammal text från textarea
text1=(text1 + textfält.getText());//fylla på innehåll från textfält och gammal text från textarea
textfält.setText("");// gör textfält tomt
}
}
);
// item3 - radera text
item3.addActionListener
(
new ActionListener()
{
public void actionPerformed( ActionEvent event )
{
textarea.setText("");// gör textarea tomt
}
}
);
}
public static void main(String [] args)
{
Projekt test = new Projekt();
}
}
[/HIGHLIGHT]
Zur Vervollständigung noch der Code der Superclass:
[HIGHLIGHT="Java"]import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class Ramen extends JFrame
{
public JMenuBar mbar;
public JMenu meny1, meny2;
public JMenuItem item1, item2, item3;
JPanel panel1 = new JPanel();
JPanel panel2 = new JPanel();
public Ramen()
{
mbar = new JMenuBar();
meny1 = new JMenu("Arkiv");
meny2 = new JMenu("Info");
item1 = new JMenuItem("Avsluta");
item2 = new JMenuItem("Lägg till text");
item3 = new JMenuItem("Radera text");
setJMenuBar(mbar);
mbar.add(meny1);
mbar.add(meny2);
meny1.add(item1); meny2.add(item2); meny2.add(item3);
Container c = getContentPane();
c.setLayout(new GridBagLayout());
c.setBackground(Color.WHITE);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
pack();
}
}[/HIGHLIGHT]
Wäre super, wenn mir jemand noch hierbei helfen könnte und bedanke mich schon jetzt für eure geschätzte Hilfe.
LG
Clou
zwei kleine Problemchen habe ich noch mit meinem Projekt.
1. In der Textarea soll eine horizontale Scrolleiste erscheinen, wenn der Text zu lang ist. Dort, wo ich den Code einfüge funktioniert das aber nicht. Kompilieren funktioniert, aber die Scrollleiste erscheint nicht. Wo liegt mein Denkfehler?
2. Bei den Buttons habe ich einen leeren Platzhalter davor gesetzt, damit die in der Mitte stehen. Nicht sauber, sieht aber so aus, wie es aussehen soll. Wie geht das ohne diesen Platzhalter?
[HIGHLIGHT="Java"]import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class Projekt extends Ramen
{
private String text1;
void buildConstraints(GridBagConstraints gbc, int gx, int gy,
int gw, int gh, int wx, int wy) {
gbc.gridx = gx;
gbc.gridy = gy;
gbc.gridwidth = gw;
gbc.gridheight = gh;
gbc.weightx = wx;
gbc.weighty = wy;
}
public Projekt()
{
text1=("");
setSize(500, 400);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final GridBagLayout gridbag = new GridBagLayout();
final GridBagConstraints constraints = new GridBagConstraints();
final JPanel pane = new JPanel();
final JScrollPane scrollyta = new JScrollPane(pane);
pane.setLayout(gridbag);
// textfield
buildConstraints(constraints, 0, 0, 5, 1, 100, 0);
constraints.fill = GridBagConstraints.HORIZONTAL;
final JTextField textfält = new JTextField();
gridbag.setConstraints(textfält, constraints);
pane.add(textfält);
//========= Das hier ist schlampig, wie schaffe ich es, dass die Buttons in der Mitte der Zeile platziert
//========= werden ohne diesen Platzhalter hier?
// tomt platshåller
buildConstraints(constraints, 0, 1, 1, 1, 0, 0);
constraints.fill = GridBagConstraints.NONE;
constraints.anchor = GridBagConstraints.EAST;
JLabel label1 = new JLabel(" ", JLabel.LEFT);
gridbag.setConstraints(label1, constraints);
pane.add(label1);
// knapp1
buildConstraints(constraints, 1, 1, 1, 1, 0, 0);
constraints.fill = GridBagConstraints.NONE;
constraints.anchor = GridBagConstraints.CENTER;
JButton knapp1 = new JButton("Bild 1");
gridbag.setConstraints(knapp1, constraints);
pane.add(knapp1);
// knapp2
buildConstraints(constraints, 2, 1, 1, 1, 0, 0);
constraints.fill = GridBagConstraints.NONE;
constraints.anchor = GridBagConstraints.CENTER;
JButton knapp2 = new JButton("Bild 2");
gridbag.setConstraints(knapp2, constraints);
pane.add(knapp2);
// knapp3
buildConstraints(constraints, 3, 1, 1, 1, 0, 0);
constraints.fill = GridBagConstraints.NONE;
constraints.anchor = GridBagConstraints.CENTER;
JButton knapp3 = new JButton("Text area");
gridbag.setConstraints(knapp3, constraints);
pane.add(knapp3);
// Label 1 (Bild 1)
buildConstraints(constraints, 0, 2, 5, 10, 100, 100);
constraints.fill = GridBagConstraints.BOTH;
final JLabel lbl1 = new JLabel(new ImageIcon("wave.gif"),
SwingConstants.CENTER//inte nödvändig, men skadar inte
);
gridbag.setConstraints(lbl1, constraints);
pane.add(lbl1);
// Label 2 (Bild 2)
buildConstraints(constraints, 0, 2, 5, 10, 100, 100);
constraints.fill = GridBagConstraints.BOTH;
final JLabel lbl2 = new JLabel(new ImageIcon("surf.jpg"),
SwingConstants.CENTER//inte nödvändig, men skadar inte
);
gridbag.setConstraints(lbl2, constraints);
pane.add(lbl2);
lbl2.setVisible(false);
// textarea
buildConstraints(constraints, 0, 2, 5, 10, 100, 100);
constraints.fill = GridBagConstraints.BOTH;
final JTextArea textarea = new JTextArea();
gridbag.setConstraints(textarea, constraints);
pane.add(textarea);
textarea.setVisible(false);
// Content Pane
setContentPane(pane);
setVisible(true);
//========== Keiner der drei funktioniert
//textarea.add((scrollyta), BorderLayout.CENTER);
//textarea.add(new JScrollPane(textarea));
//getContentPane().add(scrollyta, BorderLayout.CENTER);
// knapp 1
knapp1.addActionListener
(
new ActionListener()
{
public void actionPerformed( ActionEvent event )
{
lbl2.setVisible(false);
textarea.setVisible(false);
lbl1.setVisible(true);
}
}
);
// knapp 2
knapp2.addActionListener
(
new ActionListener()
{
public void actionPerformed( ActionEvent event )
{
lbl1.setVisible(false);
textarea.setVisible(false);
lbl2.setVisible(true);
}
}
);
// knapp 3
knapp3.addActionListener
(
new ActionListener()
{
public void actionPerformed( ActionEvent event )
{
lbl1.setVisible(false);
lbl2.setVisible(false);
textarea.setVisible(true);
textarea.add((scrollyta), BorderLayout.CENTER);
}
}
);
// item1 - avsluta
item1.addActionListener
(
new ActionListener()
{
public void actionPerformed( ActionEvent event )
{
System.exit( 0 );
}
}
);
// item2 - lägg till text
item2.addActionListener
(
new ActionListener()
{
public void actionPerformed( ActionEvent event )
{
textarea.setText(text1 + textfält.getText());//fylla på innehåll från textfält och gammal text från textarea
text1=(text1 + textfält.getText());//fylla på innehåll från textfält och gammal text från textarea
textfält.setText("");// gör textfält tomt
}
}
);
// item3 - radera text
item3.addActionListener
(
new ActionListener()
{
public void actionPerformed( ActionEvent event )
{
textarea.setText("");// gör textarea tomt
}
}
);
}
public static void main(String [] args)
{
Projekt test = new Projekt();
}
}
[/HIGHLIGHT]
Zur Vervollständigung noch der Code der Superclass:
[HIGHLIGHT="Java"]import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class Ramen extends JFrame
{
public JMenuBar mbar;
public JMenu meny1, meny2;
public JMenuItem item1, item2, item3;
JPanel panel1 = new JPanel();
JPanel panel2 = new JPanel();
public Ramen()
{
mbar = new JMenuBar();
meny1 = new JMenu("Arkiv");
meny2 = new JMenu("Info");
item1 = new JMenuItem("Avsluta");
item2 = new JMenuItem("Lägg till text");
item3 = new JMenuItem("Radera text");
setJMenuBar(mbar);
mbar.add(meny1);
mbar.add(meny2);
meny1.add(item1); meny2.add(item2); meny2.add(item3);
Container c = getContentPane();
c.setLayout(new GridBagLayout());
c.setBackground(Color.WHITE);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
pack();
}
}[/HIGHLIGHT]
Wäre super, wenn mir jemand noch hierbei helfen könnte und bedanke mich schon jetzt für eure geschätzte Hilfe.
LG
Clou
Zuletzt bearbeitet von einem Moderator: