Java. GUI mit WindowBuilder scroll-Leiste im Textfeld funktioniert nicht
Ich weiß nicht, warum meine scroll-Leiste im text-Bereich funktioniert nicht. Ich fand viele Lösungen im internet, aber keine 1 geholfen für mich.
textArea1 = new JTextArea();
textArea1.setBounds(13, 28, 182, 199);
panel.add(textArea1);
JScrollBar scrollBar = new JScrollBar();
scrollBar.setBounds(205, 1, 17, 242);
panel.add(scrollBar);
Fand ich, dass kann nicht sein", Panel-layout Absolute, wenn ich Es ändern zu Gruppe layout das gleiche.
Was ist falsch? Könnten Sie mir helfen? Danke.
AKTUALISIERT:
package lt.kvk.i3_2.kalasnikovas_stanislovas;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.BorderLayout;
import javax.swing.JTextPane;
import javax.swing.DropMode;
import javax.swing.JFormattedTextField;
import java.awt.Component;
import javax.swing.Box;
import java.awt.Dimension;
import javax.swing.JTextField;
import javax.swing.JTextArea;
import javax.swing.UIManager;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.Toolkit;
import javax.swing.JMenuBar;
import javax.swing.JMenu;
import javax.swing.GroupLayout;
import javax.swing.GroupLayout.Alignment;
import javax.swing.JMenuItem;
import javax.swing.LayoutStyle.ComponentPlacement;
import javax.swing.ImageIcon;
import javax.swing.JDesktopPane;
import java.awt.SystemColor;
import java.awt.Font;
import javax.swing.border.BevelBorder;
import javax.swing.border.EtchedBorder;
import javax.swing.JScrollBar;
import java.awt.Color;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.Scanner;
import javax.swing.JLabel;
import javax.swing.JToolBar;
public class KDVizualizuotas {
private JFrame frmInformacijaApieMuzikos;
private JTextField txtStilius;
private JTextArea textArea1;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
KDVizualizuotas window = new KDVizualizuotas();
window.frmInformacijaApieMuzikos.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the application.
*/
public KDVizualizuotas() {
initialize();
}
/**
* Initialize the contents of the frame.
*/
private void initialize() {
frmInformacijaApieMuzikos = new JFrame();
frmInformacijaApieMuzikos.setResizable(false);
frmInformacijaApieMuzikos.setIconImage(Toolkit.getDefaultToolkit().getImage(KDVizualizuotas.class.getResource("/lt/kvk/i3_2/kalasnikovas_stanislovas/resources/Sidebar-Music-Blue-icon.png")));
frmInformacijaApieMuzikos.setTitle("Muzikos stiliai");
frmInformacijaApieMuzikos.setBounds(100, 100, 262, 368);
frmInformacijaApieMuzikos.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
txtStilius = new JTextField();
txtStilius.setBounds(10, 34, 128, 20);
txtStilius.setColumns(10);
JButton btnIekoti = new JButton("Ie\u0161koti");
btnIekoti.setBounds(146, 36, 89, 19);
btnIekoti.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
// textArea1.append(txtStilius.getText()+"\n");
// txtStilius.getText();
Scanner input = new Scanner(System.in);
try {
FileReader fr = new FileReader("src/lt/kvk/i3_2/kalasnikovas_stanislovas/Stiliai.txt");
BufferedReader br = new BufferedReader(fr);
String stiliuSarasas;
while((stiliuSarasas = br.readLine()) != null) {
System.out.println(stiliuSarasas);
textArea1.append(stiliuSarasas+"\n");
}
fr.close();
}
catch (IOException e) {
System.out.println("Error:" + e.toString());
}
}
});
JPanel panel = new JPanel();
panel.setBounds(10, 65, 224, 243);
panel.setBorder(new EtchedBorder(EtchedBorder.LOWERED, null, null));
panel.setBackground(SystemColor.text);
JLabel lblveskiteMuzikosStili = new JLabel("\u012Eveskite muzikos stili\u0173:");
lblveskiteMuzikosStili.setBounds(10, 14, 222, 14);
frmInformacijaApieMuzikos.getContentPane().setLayout(null);
panel.setLayout(null);
frmInformacijaApieMuzikos.getContentPane().add(panel);
JLabel lblInformacijaApieMuzikos = new JLabel("Informacija apie muzikos stili\u0173:");
lblInformacijaApieMuzikos.setBounds(12, 3, 190, 14);
panel.add(lblInformacijaApieMuzikos);
textArea1 = new JTextArea();
textArea1.setBounds(13, 28, 182, 199);
panel.add(textArea1);
JScrollBar scrollBar = new JScrollBar();
scrollBar.setBounds(205, 1, 17, 242);
panel.add(scrollBar);
frmInformacijaApieMuzikos.getContentPane().add(txtStilius);
frmInformacijaApieMuzikos.getContentPane().add(btnIekoti);
frmInformacijaApieMuzikos.getContentPane().add(lblveskiteMuzikosStili);
JMenuBar menuBar = new JMenuBar();
frmInformacijaApieMuzikos.setJMenuBar(menuBar);
JMenu mnFile = new JMenu("File");
menuBar.add(mnFile);
JMenuItem mntmExit = new JMenuItem("Exit");
mntmExit.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
System.exit(0);
}
});
mntmExit.setIcon(new ImageIcon(KDVizualizuotas.class.getResource("/lt/kvk/i3_2/kalasnikovas_stanislovas/resources/exitas.png")));
mnFile.add(mntmExit);
JMenu mnEdit = new JMenu("Edit");
menuBar.add(mnEdit);
JMenu mnHelp = new JMenu("Help");
menuBar.add(mnHelp);
JMenuItem mntmHelp = new JMenuItem("Help");
mnHelp.add(mntmHelp);
JMenu mnAbout = new JMenu("About");
menuBar.add(mnAbout);
JMenuItem mntmAbout = new JMenuItem("About");
mntmAbout.setIcon(new ImageIcon(KDVizualizuotas.class.getResource("/lt/kvk/i3_2/kalasnikovas_stanislovas/resources/questionmark.png")));
mnAbout.add(mntmAbout);
}
}
- Versuchen Sie, den text-Bereich, wie der scroll-Balken anzeigen
JScrollBar scrollBar = new JScrollBar(textArea1)
und verwenden Sie nichtnull
layouts 😉 - Das habe ich versucht, aber ich erhielt den Fehler:
The constructor JScrollBar(JTextArea) is undefined.
- und was Sie bedeuten "nicht mit null-layouts"? Danke für die Unterstützung. - Ein
null
layout bedeutet, dass Sie sind nicht mit einem layout-manager, auch bekannt als das absolute layout oder die absolute Positionierung. MitsetBounds
ist ein gutes Indiz für eine null - /absolute-layout - Dies ist problematisch und wird nicht empfohlen. Ich brauchen würde, um zu sehen, den code, bevor ich den Fehler diagnostizieren - Ich aktualisierte mein Erster post mit dem vollständigen code.
- Diese
setLayout(null)
ist nicht zu empfehlen. Auch das ursprüngliche problem weiterhin besteht,JScrollBar scrollBar = new JScrollBar()
werden mussJScrollBar scrollBar = new JScrollBar(textArea1)
und Sie brauchen nichtpanel.add(textArea1)
- Wie ich schon sagte, wenn ich
JScrollBar scrollBar = new JScrollBar(textArea1)
ich erhielt den Fehler:The constructor JScrollBar(JTextArea) is undefined.
- Sorry, habe ich komplett übersehen die Tatsache, dass Sie versuchen, eine
JScrollBar
und nicht einJScrollPane
😛 - Sie brauchen nicht zu tun, das Sie selbst sind, das ist, wasJScrollPane
entworfen wurde. Werfen Sie einen Blick auf How to use Scroll Panes für mehr details - Ich wirklich nicht verstehen, wie eine ScrollPane, hier sind so viel Arbeit, das zu tun? Könnten Sie mir zeigen, wie eine ScrollPane-muss mal schauen in meinem code, bitte. Ich danke Ihnen sehr.
- Überprüfen Sie den link in meinem vorherigen Kommentar - überprüfen Sie auch die aktualisierte Antwort
InformationsquelleAutor | 2013-01-16
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie die Komponente, die Sie möchten zu werden, innerhalb der scroll-Bereich zu.
Können Sie dies über die
JScrollPane
's Konstruktor oderJScrollPane#setViewportView
MethodeAktualisiert mit der richtigen layout
Sollten Sie vermeiden
null
oder absoluten layouts, Sie werden nur Schaden Sie auf lange falsch.Finden Sie auch How to use Scroll Panes der Nutzung
JScrollBar#setVerticalScrollBarPolicy(int)
auf und übergeben Ihr den WertScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS