我有一个摆动尺寸问题:
我有一个JTree包含在一个JScrollPane(它包含在一个自定义组件中,它从swingx扩展JXPanel,但我认为这与这个问题无关).
无论树有多少行,滚动窗格总是更大(树是dinamic但没有设计成有很多行)但我想要的是JScrollPane调整到树的初始高度,然后显示垂直滚动当某些节点被扩展时.
我试过没有设置任何大小,设置树preferred size to null和设置滚动窗格preferred size to null,但没有任何变化.我不想手动设置尺寸......有没有办法做到这一点?
谢谢
我在JScrollPane中有一个JTable; 我如何获得JTable?
谢谢
我正在制作一个具有滚动图像的程序,如果按下按钮,我无法弄清楚如何更新图像(例如:向图像添加绿色椭圆.)它已经绘制了将图像放入JScrollPane并可以滚动,但是当您单击按钮时它不会刷新图像.(代码中的更多细节)这是代码:
public class PegMaster extends JPanel implements ActionListener {
//Note: not complete code
public PegBox[] pegbox = new PegBox[9];
public static Dimension size = new Dimension(520, 500);
public BufferedImage canvas;
public Graphics2D g2d;
public JScrollPane scroller;
JPanel panel;
private Canvas window;
JScrollPane pictureScrollPane;
public PegMaster() {
JButton button = new JButton("test");
button.addActionListener(this);
add(button);
canvas = new BufferedImage((int)size.getWidth()-30, 75 * GUESSES, BufferedImage.TYPE_INT_RGB);
g2d = canvas.createGraphics();
for(int i = 0;i<=pegbox.length-1;i++) {
pegbox[i] = new PegBox(i, g2d);
}
window = new Canvas(new ImageIcon(toImage(canvas)), …Run Code Online (Sandbox Code Playgroud) 码:
list1items = new DefaultListModel();
list1items.addElement("-");
list1 = new JList(list1items);
list1.setSelectionMode (ListSelectionModel.SINGLE_SELECTION);
list1.setBounds(0,0, 100,100);
JScrollPane list1scr = new JScrollPane(list1);
list1scr.setPreferredSize(new Dimension(20, 20));
list1.setVisibleRowCount(8);
getContentPane().add (list1scr);
Run Code Online (Sandbox Code Playgroud)
并且没有滚动条出现.当项目太多,它们被隐藏时,我无法接触到它们.怎么解决这个?
我正在尝试用Java做一些事情,这要求我在ScrollPane中有一个JTextArea.
以下是我如何定义它们:
private JTextArea longestparagraph = new JTextArea();
....
JScrollPane scrollpanedreapta = new JScrollPane(longestparagraph,
JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
scrollpanedreapta.setBorder(BorderFactory.createTitledBorder("Cel mai lung paragraf:"));
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是,当文本到达TextArea的右边界时,文本不会在新行上开始,但它会继续.有任何想法如何解决?这是一张让我的陈述更清晰一点的图片.

当框架出现JTextArea水平劈开直到达到框架宽度尺寸并且在框架尺寸调整时,JTextArea将再次拉伸以匹配框架的宽度.如果添加了输入JTextArea,它将继续水平增长,而不是将文本包装到新行.
如果没有setLineWrap(true)与setWrapStyleWord(true)所述JTextArea将所述框架上呈现正确,但仍伸展JTextArea在第一行上.
我该如何解决这个问题?
public class GridBagExample {
private JFrame frame;
private final JPanel panel;
private JLabel frontText, reverseText;
private JTextField frontTextField;
private final JTextArea reverseTextArea;
private GridBagLayout gridBagLayout;
private GridBagConstraints constraints;
private JButton submit, cancel;
public GridBagExample() {
frame = new JFrame("Create new flashcard");
gridBagLayout = new GridBagLayout();
constraints = new GridBagConstraints();
panel = new JPanel(gridBagLayout);
panel.setSize(240,220);
frontText = new JLabel("Front Text");
constraints.ipadx = 1;
constraints.ipady …Run Code Online (Sandbox Code Playgroud) 我从Java和Swing开始,所以我有一个非常简单的问题,但我找不到任何(简单)方法来解决它...
我的意思是只有一个列表滚动器占据一个面板的整个高度,仅此而已.这是我已编写的代码,thanx帮助我找到实现目标的方法:
public class TestCode {
public static void main(String[] args) {
JFrame window = new JFrame("Test");
window.setSize(300, 300);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panelUp = new JPanel();
JPanel panelCenter = new JPanel();
JPanel panelDown = new JPanel();
window.add(panelUp, BorderLayout.NORTH);
window.add(panelCenter, BorderLayout.WEST);
window.add(panelDown, BorderLayout.SOUTH);
panelUp.setBackground(new Color(200, 240, 200));
panelCenter.setBackground(new Color(240, 200, 200));
panelDown.setBackground(new Color(200, 200, 240));
Vector v = new Vector();
v.addElement("Element 1");
v.addElement("Element 2");
v.addElement("Element 3");
v.addElement("Element 4");
v.addElement("Element 5");
v.addElement("Element 6");
JList list = new JList(v);
JScrollPane listScroller = new JScrollPane(list); …Run Code Online (Sandbox Code Playgroud) 我的问题类似于这个问题(如何在JScrollPane中获取JScrollPanes以跟随父级调整大小),但这个问题不明确,那里的答案对我没有帮助..
我有这个SSCCE(使用MigLayout):
public static final int pref_height = 500;
public static void main(String[] args) {
JPanel innerPanel = new JPanel(new MigLayout());
innerPanel.setBorder(new LineBorder(Color.YELLOW, 5));
for(int i = 0; i < 15; i++) {
JTextArea textArea = new JTextArea();
textArea.setColumns(20);
textArea.setRows(5);
textArea.setWrapStyleWord(true);
textArea.setLineWrap(true);
JScrollPane jsp = new JScrollPane(textArea);
innerPanel.add(new JLabel("Notes" + i));
innerPanel.add(jsp, "span, grow");
}
JScrollPane jsp = new JScrollPane(innerPanel) {
@Override
public Dimension getPreferredSize() {
setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
Dimension dim = new Dimension(super.getPreferredSize().width + getVerticalScrollBar().getSize().width, pref_height);
setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED); …Run Code Online (Sandbox Code Playgroud) 起初,我们有一个JPanel.由于其环境和背景,其宽度可以变化.它包含JLabels垂直顺序的一些组件(例如,为简单起见).这些组件的某些内容宽度太大而无法显示:
这很有效,直到我们有很多项目.因此,我们将面板放入JScrollPane带有HORIZONTAL_SCROLLBAR_NEVER标志的面板中.这是我的预期结果:
但事实上其他事情发生了.不强制使用长文本的第二个标签的大小,并且面板在视口之外生长:
什么是最简单的正确解决方案?
JList不是一个合适的解决方案.