小编Bob*_*ard的帖子

为什么fillRect命令不会显示在我的JFrame上?

所以我试图通过创建一个对象并将其添加到JFrame来单击鼠标时绘制一个矩形.但是一旦命令运行它就不会出现.有什么想法吗?

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Gui3 extends JFrame {
    private JPanel mousepanel;
    private JLabel statusbar;

    public Gui3(){
        super("The title");

        mousepanel = new JPanel();
        mousepanel.setBackground(Color.WHITE);
        add(mousepanel, BorderLayout.CENTER);

        statusbar = new JLabel("Default");
        add(statusbar, BorderLayout.SOUTH);

        HandlerClass handler = new HandlerClass();
        mousepanel.addMouseListener(handler);
        mousepanel.addMouseMotionListener(handler);
    }   
    private class HandlerClass implements MouseListener, MouseMotionListener
        {
Run Code Online (Sandbox Code Playgroud)

这就是问题出现的地方.程序及其所有方法都有效,它只是绘制了问题的矩形.绘制形状的对象如下.

public void mouseClicked(MouseEvent event) {
        statusbar.setText(String.format("Clicked at %d,%d",event.getX(),event.getY()));
                DrawShapes shapes = new DrawShapes();
                add(shapes);
            }
            public void mousePressed(MouseEvent event){
                statusbar.setText("You pressed down the mouse");
            }
            public void mouseReleased(MouseEvent …
Run Code Online (Sandbox Code Playgroud)

java swing jpanel

1
推荐指数
1
解决办法
207
查看次数

JList不会出现在JFrame上

一切都有效,除了列表没有出现在JFrame上.我不明白为什么我不能在没有声明新布局的情况下添加内容.

    import javax.swing.*;
    import javax.swing.event.ListSelectionEvent;
    import javax.swing.event.ListSelectionListener;

    import java.awt.*;
    import java.awt.event.*;

public class Gui3 extends JFrame {
    private JPanel mousepanel;
    private JLabel statusbar;
    private JList list;
    private static String[] colornames = {"black","blue","red","white"};
    private static Color[] colors = {Color.BLACK, Color.BLUE,Color.RED,Color.WHITE};

    public Gui3(){
        super("The title");

        list = new JList(colornames);
        list.setVisibleRowCount(4);
        list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        list.setFixedCellHeight(15);
        list.setFixedCellWidth(100);
        add(new JScrollPane(list));
        list.addListSelectionListener(
                new ListSelectionListener(){
                    public void valueChanged(ListSelectionEvent event){
Run Code Online (Sandbox Code Playgroud)

用户应该能够从列表中选择背景颜色,然后程序应该将背景更改为该颜色.但是不是......

mousepanel.setBackground(colors[list.getSelectedIndex()]);

                    }
                }
            );

        mousepanel = new JPanel();
        mousepanel.setBackground(Color.WHITE);
        add(mousepanel, BorderLayout.CENTER);

        statusbar = new JLabel("Default");
        add(statusbar, BorderLayout.SOUTH); 


        HandlerClass handler …
Run Code Online (Sandbox Code Playgroud)

java swing jframe jlist

1
推荐指数
1
解决办法
445
查看次数

使用Java布局管理器的目的是什么?

似乎每当我尝试创建一个程序时,我总是最终使用setLayout(null);Java中的命令,因为我喜欢绝对定位我正在放置在我的swing组件上的任何东西.从我读到的每个人都一直在说使用布局管理器来简化编码过程,但它如何简化它?平台系统之间的绝对定位会产生什么问题?

java layout swing

1
推荐指数
1
解决办法
165
查看次数

标签 统计

java ×3

swing ×3

jframe ×1

jlist ×1

jpanel ×1

layout ×1