相关疑难解决方法(0)

重写到MVC后GUI无法正常工作

我正在练习MVC风格的编程.我在一个文件中有一个Mastermind游戏,工作正常(可能除了"Check"按钮在开始时不可见).

http://paste.pocoo.org/show/226726/

但是当我把它重写为模型,视图,控制器文件时 - 当我点击空Pin(应该更新,并重新绘制新颜色)时 - 注意到了.谁能在这里看到任何问题?我尝试在不同的地方放置repaint(),但它根本不起作用:/

主要:

public class Main { 
    public static void main(String[] args){
        Model model = new Model();
        View view = new View("Mastermind", 400, 590, model);
        Controller controller = new Controller(model, view); 
        view.setVisible(true);
    }
}
Run Code Online (Sandbox Code Playgroud)

型号:

import java.util.Random;

public class Model{
    static final int
    LINE = 5,
    SCORE = 10, OPTIONS = 20;
    Pin pins[][] = new Pin[21][LINE];
    int combination[] = new int[LINE];
    int curPin = 0;
    int turn = 1;
    Random generator = new Random(); …
Run Code Online (Sandbox Code Playgroud)

java model-view-controller user-interface swing

121
推荐指数
2
解决办法
4万
查看次数

可以在main之外的类中使用进度条吗?

现在,我的主要是用10行调用一个gui.根据这些行中有多少行有文本,调用9个类中的1个(两行必须有文本).被调用的类执行计算,我希望将进度条绑定到.以下是其中一个被调用类的示例(每个类都相似,但足够不同以保证新类.)我认为问题违反了EDT规则,但我在其上看到的所有示例都涉及到论点.运行代码时会出现框架,但在完成所有计算之前,进度条不会更新.

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class twoLoan extends JFrame {

    static JFrame progressFrame;
    static JProgressBar progressBar;
    static Container pane;
    double amountSaved = 0;
    int i = 0;

    public void runCalcs(Double MP, Double StepAmt,
        Double L1, Double L2, Double C1, Double C2,
        Double IM1, Double IM2, Double M1Start, Double M2Start) {

        try {
            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        } catch (Exception e) {
        }

        int iterations = (int) (MP - (M1Start * M2Start));

        //Create all components
        progressFrame = new JFrame("Calculation Progress");
        progressFrame.setSize(300, …
Run Code Online (Sandbox Code Playgroud)

java swing swingworker jprogressbar

31
推荐指数
1
解决办法
2万
查看次数

JTable模型侦听器过早检测插入的行(在绘制它们之前)

我有一个JTable可以由用户动态添加的行.它位于a中JScrollPane,因此当行数足够大时,滚动条变为活动状态.我的愿望是当用户添加新行时,滚动条一直移动到底部,以便在滚动窗格中看到新行.我现在(下面的SSCCE)尝试使用表模型侦听器来检测插入行的时间,并在进行检测时强制滚动条一直向下.然而,似乎这种检测"太早了",因为模型已经更新但是新行还没有实际绘制过,所以会发生的事情是滚动器插入新行之前一直移动到底部,并且然后将新行插入窗格末端的下方(不可见).

显然这种方法在某种程度上是错误的.什么是正确的方法?

import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JScrollBar;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTable;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.table.DefaultTableModel;

public class TableListenerTest {

    private JFrame frame;
    private JScrollPane scrollPane;
    private JTable table;
    private DefaultTableModel tableModel;

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    TableListenerTest window = new TableListenerTest();
                    window.frame.setVisible(true);
                } catch (Exception e) { …
Run Code Online (Sandbox Code Playgroud)

java user-interface swing jtable listener

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

Java ScrollPane重叠内容

我对我的JScrollPanes的初学者问题非常肯定.问题是垂直滚动条与封闭面板内的组件重叠(在右侧).当滚动条与JComboBoxes的下拉位重叠时,它会变得有点痛苦.

我把问题归结为这个小片段 - 我希望它说明了这个问题.

public class ScrollTest extends JFrame
{
    public ScrollTest()
    {
        super("Overlap issues!");
        JPanel panel = new JPanel();
        panel.setLayout(new GridLayout(100,0));

        for(int b=0;b<100;++b)
        {
            panel.add(new JButton("Small overlap here ->"));
        }

        JScrollPane scrollpane = new JScrollPane(panel);
        add(scrollpane);
        pack();
        setVisible(true);
    }

    public static void main(String[] args) 
    {
        new ScrollTest();
    }
}
Run Code Online (Sandbox Code Playgroud)

我先看了看,但看不出是否其他人已经解决了这个问题.对不起,如果它是重复的,非常感谢任何帮助,任何人都可以提供像我这样的java-newb!

java user-interface swing jscrollpane

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

getValueIsAdjusting究竟做了什么?

如您所知,!getValueIsAdjusting当您在jtable中选择一行(通过单击)时,不使用选择更改事件两次.如果使用键盘箭头选择行,则不会发生这种情况.要解决它,请检查是否getValueIsAdjusting返回false.

我的问题是,如果我通过点击选择一行,但是当使用键盘箭头时没有选择一行,为什么事件会触发两次?getValueIsAdjusting做了什么来解决它?

java swing jtable

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

JButton处于紧迫状态

在我的Java GUI应用程序我有一个JButton和点击时调用一个function连接到一个database,然后调用functionclear一个tableDB,然后调用function从一个文件并加载读取文本variables,这就要求一个function从另一个文件中读取文本,进行比较在data从两个,然后调用function要么updateinsert数据在数据库中,所有这一切工作正常.

但是我的问题与JButton它有关,当它点击时我想运行一个Indeterminate progress bar正确的用户知道工作正在完成然后就在它离开之前action listener setIndeterminate to false并设置了progress barto 的值100(complete),但在我的情况下当你点击button它保持在点击状态和progress bar冻结.

我应该实施什么来防止这种情况?可能穿线?但我对java中的线程很新.这是我的动作听众:

    private class buttonListener implements ActionListener
        {
            public void actionPerformed(ActionEvent e)
            {
                if( e.getSource() == genButton )
                {
                    progressBar.setIndeterminate(true);
                    progressBar.setString(null);
                    try 
                    {
                        dbConnect(); //connects to DB …
Run Code Online (Sandbox Code Playgroud)

java swing swingworker actionlistener jprogressbar

4
推荐指数
3
解决办法
3992
查看次数

将JScrollPane锁定到JTextArea的底部(java swing)

我目前有一个设置,我有一个JTextArea内部a,JScrollPane以便您可以滚动框中的文本.

我想要做的是设置JScrollPane,以便每当新文本添加到框中时(总是在新行的底部),它将向下滚动到底部.

有没有一种简单的方法来实现这一目标?

请注意:我不希望它被永久锁定在底部(用户仍然可以滚动文本),就像正在更新文本时一样.我正在追逐一种效果,就像在UNIX中拖尾日志文件一样.

java swing jscrollpane jtextarea

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

在一个JPanel上画的10个线程

我在学习Java中的线程时遇到了一些问题.目标是进行模拟,向我们展示兔子在某种类型的板上如何从狼群中奔跑.每只狼和每只兔子都应该成为一个线索.所以我在Test类的main方法中创建了一个GUI,并创建了一个实现Runnable接口的新类.我认为这很容易也很合乎逻辑.但是现在,我如何AddRabbit从这些线程调用该方法?因为非常线程应该像下面这样做:

  1. 更改其属性,如地图上的位置
  2. 检查地图上的其他线程
  3. 在面板上涂漆

但是怎么样?

java swing multithreading rendering jpanel

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

JTable中的JCheckBox值

JCheckBox检查但是当我使用system.out.print时它仍然显示其值为false.如果焦点丢失但JCheckBox仍然检查,则返回true.即,当我选中2复选框时,结果显示是第一个复选框.未显示第二个复选框的状态.完成编程如下所示:请运行编程并纠正我的错误.欢迎任何帮助.

public class check extends JFrame {

    public check() {
        setBounds(00, 40, 400, 400);
        Color c = new Color(160, 200, 100);
        getContentPane().setBackground(c);
        Color c3 = new Color(0, 50, 50, 2);
        setTitle("MARKING OF TARGET HABITATION");
        setUndecorated(true);
        getRootPane().setWindowDecorationStyle(JRootPane.PLAIN_DIALOG);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        String[] columnNames = {"Country", "Capital", "Population in Millions",
            "Democracy"};
        Object[][] data = {
            {"USA", "Washington DC", 280, new Boolean(false)},
            {"Canada", "Ottawa", 32, new Boolean(false)},
            {"United Kingdom", "London", 60, new Boolean(false)},
            {"Germany", "Berlin", 83, new Boolean(false)},
            {"France", "Paris", 60, new Boolean(false)}, …
Run Code Online (Sandbox Code Playgroud)

java swing jtable jcheckbox

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

创建动态表以使用按钮添加新条目

我正在尝试构建一个寄存器,这样当单击一个按钮时,表格上会出现一个新条目.理想情况下,我希望在屏幕左侧构建一个表格,当单击按钮时会出现两行和新列.我希望表具有固定的大小,但是在一定数量的条目之后它应该是可滚动的.到目前为止,我已经创建并格式化了JButton我想要单击的对象以显示新条目.我也知道我应该用a JTable来追求这个.

我该怎么做这个动态表?

代码:

private void addRegister(JPanel pane) {

             JPanel everythingPane = new JPanel();
             JPanel pluPane = new JPanel();

             Dimension button = new Dimension(200,150);

             JTable pluTable = new JTable();


             JPanel buttonPane = new JPanel();

             buttonPane.setLayout(new BoxLayout(buttonPane, BoxLayout.Y_AXIS));

             //JPanel buttonPane = new JPanel (new FlowLayout (FlowLayout.LEFT));

             JPanel subPane1 = new JPanel();
             subPane1.setAlignmentX(LEFT_ALIGNMENT);
             JPanel subPane2 = new JPanel();
             subPane2.setAlignmentX(LEFT_ALIGNMENT);
             JPanel subPane3 = new JPanel();
             subPane3.setAlignmentX(LEFT_ALIGNMENT);
             JPanel subPane4 = new JPanel();
             subPane4.setAlignmentX(LEFT_ALIGNMENT);
             JPanel subPane5 = new JPanel();
             subPane5.setAlignmentX(LEFT_ALIGNMENT);
             JPanel alignmentLayer …
Run Code Online (Sandbox Code Playgroud)

java swing jtable dynamic dynamic-tables

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