我需要帮助。我有一个面板,它的宽度可能需要 1000 像素。我需要添加许多不同大小的按钮(我添加了流布局并且它工作正常)。问题是我在屏幕示例上的高度为 500 像素,但是当我添加按钮面板时,它的尺寸更大。如何将滚动条添加到面板?
我制作了一个带有滚动窗格的程序,但它不起作用。请看源码:
JInfoView.java
package view;
import javax.swing.*;
import java.util.*;
import java.awt.*;
public class JInfoView extends JPanel {
private JButton button = new JButton("ADD");
private JButton buttonDelete = new JButton("DEL");
private JTextField input = new JTextField("Text", 5);
private JLabel label = new JLabel("Test");
public JInfoView() {
this.setLayout(new FlowLayout());
this.add(button);
this.add(buttonDelete);
this.add(input);
this.add(label);
}
}
Run Code Online (Sandbox Code Playgroud)
JMainView.java
package view;
import java.awt.*;
import javax.swing.*;
import java.util.*;
import view.JInfoView;
public class JMainView extends JFrame {
private JPanel mypanel = new JPanel(new GridLayout(0, 1, 30, 50));
private …Run Code Online (Sandbox Code Playgroud) 有时(并非总是)在滚动我的JScrollPane栏时,一些组件(通常是像JLabel这样的文本)不能正确重新绘制,它们最终只是部分渲染.
我不知道为什么会这样.我已经尝试在AdjustmentListener中调用paint(),但这似乎没有帮助.
有任何想法吗?
编辑:组件的初始化
panel = new JPanel();
ImageIcon img = new ImageIcon("editor.png");
setIconImage(img.getImage());
initComponents();
final JScrollPane pane = new JScrollPane(panel);
this.setContentPane(pane);
//pane.setLayout(new ScrollPaneLayout());
//pane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
Dimension dim = panel.getSize();
dim.height = dim.height - 100;
pane.setSize(dim);
this.setSize(dim);
AdjustmentListener hListener = new AdjustmentListener() {
@Override
public void adjustmentValueChanged(AdjustmentEvent e) {
repaint();
for(Component c : panel.getComponents())
c.repaint();
for(Component c : pane.getComponents())
c.repaint();
panel.repaint();
panel.revalidate();
pane.repaint();
pane.revalidate();
}
};
pane.getVerticalScrollBar().addAdjustmentListener(hListener);
panel.setVisible(true);
pane.setVisible(true);
Run Code Online (Sandbox Code Playgroud) 我正在使用swing创建用户注册表单.某些标签显示不正确,也不显示列名.
以下是我的代码:
import java.awt.EventQueue;
import javax.swing.JFrame;
import java.awt.FlowLayout;
import javax.swing.JLabel;
import java.awt.GridBagLayout;
import java.awt.GridBagConstraints;
import javax.swing.JTextField;
import java.awt.Insets;
import javax.swing.JComboBox;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JCheckBox;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.SwingConstants;
import javax.swing.GroupLayout;
import javax.swing.GroupLayout.Alignment;
import javax.swing.LayoutStyle.ComponentPlacement;
import java.awt.Font;
import javax.swing.JButton;
import java.awt.Window.Type;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.JScrollBar;
import java.awt.Scrollbar;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Vector;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;
import javax.swing.ListSelectionModel;
public class UserRegistration {
private …Run Code Online (Sandbox Code Playgroud) 我知道很多人问过这个问题,但我仍然无法解决这个问题。我在 JScrollPane 中有一个 JPanel。JPanel 包含六个动态加载的面板。加载面板后,系统会垂直自动滚动到面板的中间。我必须避免这种情况,所以我尝试了这个:
panel.scrollRectToVisible(scrollPane.getBounds());
Run Code Online (Sandbox Code Playgroud)
但它不起作用。我的scrollPane就是这样创建的
JScrollPane scrollPane= new JScrollPane();
scrollPane.setBounds(panel.getBounds());
scrollPane.setViewportView(panel);
Run Code Online (Sandbox Code Playgroud)
你能帮助我吗?
好的,所以这里是我的代码片段,其中包含问题:
private JTextField userText;
private ObjectOutputStream output;
private ObjectInputStream input;
private ServerSocket server;
private Socket connection;
private JTextPane images;
private JScrollPane jsp = new JScrollPane(images);
public Server(){
super(name+" - IM Server");
images = new JTextPane();
images.setContentType( "text/html" );
HTMLDocument doc = (HTMLDocument)images.getDocument();
userText = new JTextField();
userText.setEditable(false);
userText.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent event){
sendMessage(event.getActionCommand());
userText.setText("");
}
}
);
add(userText, BorderLayout.NORTH);
add(jsp);
add(images, BorderLayout.CENTER);
images.setEditable(false);
try {
doc.insertString(0, "This is where images and text will show up.\nTo send an image, …Run Code Online (Sandbox Code Playgroud) 我有一个动态创建和填充的表.单击其他表单中的按钮时会显示此动态表单.这是代码:
package ExaData;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.EventQueue;
import java.awt.FlowLayout;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.text.NumberFormat;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.JTableHeader;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.StackedBarRenderer;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.ui.RefineryUtilities;
public class ShowGraph extends javax.swing.JFrame {
String[][] data;
String[] columns={"Tan?m","De?er"};
Sessionn obj;
String SGA="SGA";
String PGA="PGA";
String JAVAPOOL="JAVAPOOL";
JCheckBox SGA_CHECK;
JCheckBox PGA_CHECK;
JCheckBox JAVA_POOL_CHECK;
JTable table;
JPanel btnPanel,tblPanel;
ChartPanel …Run Code Online (Sandbox Code Playgroud) 对于我的应用程序,我正在设计一个脚本编辑器。目前我有一个JPanel包含另一个JPanel保存行号(位于左侧)和一个JTextArea用于允许用户输入他们的代码(位于右侧)。
目前,我已经实现了JScrollPane在JTextArea允许用户通过滚动他们的代码。
对于JPanel包含行号的行号,每次用户按下回车键时它们都会增加。
但是,问题是我想要相同的 JScrollPane(在 上实现的JTextArea)来控制行号 JPanel 的滚动;即当用户在 JTextArea 上滚动时,行号 JPanel 也应该滚动。但是由于行号保存在 JPanel 中,我无法将该组件添加到 JTextArea。
包含 JTextArea 和行号 JPanel 的 JPanel 类的构造函数:
private ScriptEditor() {
setBackground(Color.WHITE);
lineNumPanel = new LineNumberPanel();
scriptArea = new JTextArea();
scriptArea.setLineWrap(true);
scriptArea.setFont(new Font(Font.SANS_SERIF, Font.PLAIN, 15));
scriptArea.setMargin(new Insets(3, 10, 0, 10));
JScrollPane scrollPane = new JScrollPane(scriptArea);
scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
scrollPane.setPreferredSize(new Dimension(width, height));
scriptArea.addKeyListener(this);
add(lineNumPanel);
add(scrollPane);
}
Run Code Online (Sandbox Code Playgroud)
行号 JPanel 的构造函数,它在自身中添加 JLabels 来表示行号:
public LineNumberPanel() {
setPreferredSize(new …Run Code Online (Sandbox Code Playgroud) 我编写了一个简单的程序来创建一个空的 JTable。但是当我显示表格时,表格下方会出现一个额外的空白。现在我想删除表格行下方的空白。
JTable 程序:
public class Table extends JFrame {
Table()
{
int numColoumns=5;
int numRows=10 ;
String[] colHeadings = {"COLUMN1","COLUMN2","COLUMN3","COLUMN4","COLUMN5"};
DefaultTableModel model = new DefaultTableModel(numRows, numColoumns) ;
model.setColumnIdentifiers(colHeadings);
JTable table = new JTable(model);
JTableHeader head = table.getTableHeader();
Container c = getContentPane();
c.setLayout(new BorderLayout());
c.add("North", head);
c.add("Center",table);
}
public static void main(String[] args) throws NumberFormatException, IOException
{
Table t = new Table();
t.setSize(500,400);
t.setVisible(true);
t.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}}
Run Code Online (Sandbox Code Playgroud)
程序给了我一个表格,但行没有完全填满窗口。它显示了一个窗口,具有给定的高度和宽度(以像素为单位)以及相应的行数。在创建的行下方,它显示了一个额外的空间,因为这些行没有填充到窗口中。任何人都可以帮助我从窗口中删除多余的空间。
抱歉,我创建了输出图像,但上传图像时出现问题。
任何人都帮助我如何JTextArea使用Swing in Java 添加滚动条?
在JTextArea刚消失的时候我添加滚动条就可以了.
希望有人让我在上面添加一个垂直滚动条.
另外的解释将非常感谢
public class Practice extends JFrame {
JFrame frame = new JFrame("AAA");
JTextArea textarea = new JTextArea();
JScrollPane scroll = new JScrollPane(textarea);
JPanel panelForScroll = new JPanel(null);
public Practice(){
frame.setLayout(null);
frame.setBounds(100,100,400,710);
frame.setResizable(false);
frame.setVisible(true);
textarea.setEditable(false);
textarea.setFont(new Font("arian", Font.BOLD, 16));
textarea.setBounds(20, 280, 340, 70);
panelForScroll.add(scroll);
frame.add(panelForScroll); //can't find text area....
}
public static void main(String[] args) {
new Practice();
}
}
Run Code Online (Sandbox Code Playgroud) java ×10
jscrollpane ×10
swing ×10
jtable ×3
jpanel ×2
jtextarea ×2
jscrollbar ×1
jtableheader ×1
jtextpane ×1
layout ×1
scroll ×1
scrollbar ×1